MS SQL Server:操作其他选定列中的当前选择值

Héc*_*rez 5 sql sql-server reporting-services

我想从选定的列中取出一个值来操作下一列。例如:

SELECT CASE 
  WHEN ID < 4 THEN ID
  ELSE 10
END
AS MY_ID,
MY_ID + 5 AS EXTRA_ID
FROM FOO
Run Code Online (Sandbox Code Playgroud)

这将输出 ID 1,2,3,4,5

MY_ID EXTRA_ID
1      6
2      7
3      8
10     15
10     15
Run Code Online (Sandbox Code Playgroud)

如果我这样做,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 子句设置为默认值的结果。

nik*_*trs 2

您可以为 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
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用表达式在 SSRS 内创建 extra_id 列值

= Fields!my_id.value + 5