sql - CASE WHEN 语句中需要的 SQL 别名列名
问题描述
如何引用别名“新日期”?我不断收到“无效的列名'NewDate'”错误。
CASE
WHEN p.Program IN ('program1') THEN (date_needed + 10)
WHEN p.Program IN ('program2') THEN (date_needed + 20)
END AS [NewDate]
CASE
WHEN date_needed < [NewDate] THEN 'Program On Time'
ELSE 'Program Late'
END AS [Modified New Date]
解决方案
由于逻辑查询处理顺序,不可能引用NewDate
同一块中的列。为此,您可以使用公用表表达式,如下所示:
WITH Base_CTE
AS
(
SELECT CASE
WHEN p.Program IN ('program1') THEN (date_needed + 10)
WHEN p.Program IN ('program2') THEN (date_needed + 20)
END AS [NewDate], date_nedded
FROM tablename
)
SELECT CASE
WHEN date_needed < [NewDate] THEN 'Program On Time'
ELSE 'Program Late'
END AS [Modified New Date]
FROM Base_CTE;
推荐阅读
- r - 如何获得我的二项式回归是否与 R 中的空模型显着不同的 p 值?
- python - 配置读取文件名 python
- objective-c - 如何根据含义在 2D 地图上组织文章?
- linux - I/O 绑定与 CPU 绑定取决于内核?
- javascript - jQuery验证不适用于cakephp表单元素
- cassandra - Cassandra节点磁盘空间超过80%
- html - 容器不会相互对齐。改变宽度会导致不良结果
- asp.net-core - RDLC 报告索引超出了数组 asp net core 的范围
- c# - 区分对象列表的列表
- android - 我看不到我的 Firebase 实时数据库