我想对数据库中的指定列进行比较,比较逻辑应该比较数字而不考虑它们的符号,并将检索带有符号的原始结果。
例如,下面的代码运行良好,但从 select 块中可以看出,它返回列的绝对值。Firebird 2.1 中有什么技巧可以作弊来克服这个问题吗?
SELECT a.ELM_NUM,a.COMBO, maxvalue(abs(a.N_1),abs(a.N_2)) as maxN from ntm a order by a.ELM_NUM
您可以使用一个CASE
条件:
SELECT a.ELM_NUM,a.COMBO,
CASE WHEN abs(a.N_1) > abs(a.N_2) THEN a.N_1 ELSE a.N_2 END as maxN
from ntm a
order by a.ELM_NUM