c# - 如何将列别名到另一个操作中
问题描述
我想使用 Elias 列 startdate 到 anthor 操作来计算
CASE WHEN GETDATE() > detail.PeriodEndDate THEN GETDATE()
ELSE detail.PeriodEndDate
END as StartDate,
CASE
WHEN usrPlan.PackagePlanId = 1 THEN DATEADD(month, 1, StartDate)
ELSE DATEADD(YEAR, 1, StartDate)
END as EndDate,
解决方案
用于定义子句CROSS APPLY
中的别名。FROM
然后它在整个查询中都可用:
SELECT . . .,
v.StartDate,
(CASE WHEN up.PackagePlanId = 1 THEN DATEADD(month, 1, v.StartDate)
ELSE DATEADD(YEAR, 1, v.StartDate)
END) as EndDate,
FROM usrPlan up . . .
detail d . . .
CROSS APPLY
(VALUES (CASE WHEN GETDATE() > d.PeriodEndDate THEN GETDATE()
ELSE d.PeriodEndDate
END)
) v(StartDate)
请注意,我添加了表别名,因此查询更易于编写和阅读。
推荐阅读
- c# - 从 MySQL 数据库中过滤数据并在 datagridview 中显示
- sharepoint - 在外部 API 中验证 SharePoint 用户
- python - Python如何删除包含列表作为元素的数据框中不需要的逗号
- c# - C# FtpWebRequest.ClientCertificates 未实现
- javascript - 如何创建具有 4 个级别的 Highcharts 树状图
- ruby-on-rails - 如何使用 nginx 在 Docker 容器上提供 Web 应用程序
- reactjs - ReactDOM 渲染使用 const 创建的元素
- java - Kafka 错误连接到节点 ubuntukafka:9092 (id: 0 rack: null) (org.apache.kafka.clients.NetworkClient) java.net.UnknownHostException:
- python - 为什么分类交叉熵的梯度不正确?
- html - Viewport 元标记对 Chrome 和 Safari 的影响是否不同,如果是,如何弥补这一点?