避免重复 sql 开关条件
Avoiding duplicating sql Switch conditions
(需要符合 Access 2003 的代码)
抱歉,如果这是 "doh!" 时刻(仍在学习)...作为 SELECT 语句的一部分,我有以下字段称为 Total
,其目的是针对每条记录, 就是计算前面4个字段的总和。如果总和小于 1000,则将“0”值传递给 Total,否则将传递实际总和。
总结我们有:
,IIf(
Switch(……) +
Switch(……) +
Switch(……) +
Switch(……)<1000,0,
Switch(……) +
Switch(……) +
Switch(……) +
Switch(……))
AS Total
在其扩展版本中它确实有效,但是,这看起来很麻烦,因为这意味着必须重复初始的 4 个开关条件两次(如果 <1000 则一次,否则则一次)。
有什么办法可以减少这个吗?
一种方法是使用子查询:
select iif(val < 1000, 0, val)
from (select x.*, (switch() + . . . + switch()) as val
from x
) as x1;
(需要符合 Access 2003 的代码)
抱歉,如果这是 "doh!" 时刻(仍在学习)...作为 SELECT 语句的一部分,我有以下字段称为 Total
,其目的是针对每条记录, 就是计算前面4个字段的总和。如果总和小于 1000,则将“0”值传递给 Total,否则将传递实际总和。
总结我们有:
,IIf(
Switch(……) +
Switch(……) +
Switch(……) +
Switch(……)<1000,0,
Switch(……) +
Switch(……) +
Switch(……) +
Switch(……))
AS Total
在其扩展版本中它确实有效,但是,这看起来很麻烦,因为这意味着必须重复初始的 4 个开关条件两次(如果 <1000 则一次,否则则一次)。
有什么办法可以减少这个吗?
一种方法是使用子查询:
select iif(val < 1000, 0, val)
from (select x.*, (switch() + . . . + switch()) as val
from x
) as x1;