我想从选定的列中取一个值来操作下一列。例如:
SELECT CASE
WHEN ID < 4 THEN ID
ELSE 10
END
AS MY_ID,
MY_ID + 5 AS EXTRA_ID
FROM FOO
这将输出 ID
1,2,3,4,5
:MY_ID EXTRA_ID
1 6
2 7
3 8
10 15
10 15
如果我这样做
MY_ID + 5
它会提示 MY_ID 不存在(它是一个别名,所以是有道理的)和 ID + 5
会读1+5, 2+5, 3+5, 4+5, 5+5
而不是 1+5, 2+5, 3+5, 4+10, 5+10
当它通过 ELSE 时。甚至有可能做到这一点吗?我在 SSRS - 报告生成器中执行此操作,并且需要根据 CASE 子句操作可能设置为默认值的结果。
最佳答案
您可以在 extra_id 列的末尾重复相同的 CASE 表达式和 +5
SELECT CASE
WHEN ID < 4 THEN ID
ELSE 10
END
AS MY_ID,
CASE
WHEN ID < 4 THEN ID
ELSE 10
END + 5 AS EXTRA_ID
FROM FOO
另一种方法是使用表达式在 SSRS 中创建 extra_id 列值
= Fields!my_id.value + 5
关于sql - MS SQL Server : Operate current select values in other selected columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46283105/