sql - MS SQL Server : Operate current select values in other selected columns

标签 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

这将输出 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/

相关文章:

reporting-services - 如何从 SSRS 中报表服务器上的一个文件夹中将所有报表导出到单个工作簿中的 excel

mysql - 在 SQL 中查询任意 x 处的 y 值的 XY 数组对

asp.net - SQL Server SSRS 2012 网页中的 HTTP 元标记

sql - 如何在MySQL中的另一个列计算中重用动态列?

sql-server - 使用完整缓存时,查找组件无法匹配空字符串

Sql Server 2008 - 将本地化日期时间列转换为 UTC

sql - SELECT ... FOR XML PATH (' ' ),1,1) 是什么意思?

excel - 使用 Reporting Services Excel 数据电子表格显示####

sql - Oracle SQL - 圆形 - 一半

java - 在 IntelliJ 中从数据库自动创建 POJO 类