gpt4 book ai didi

sql-server - 使用 case 时如何更改列名? SQL 服务器查询

转载 作者:行者123 更新时间:2023-12-04 02:22:36 24 4
gpt4 key购买 nike

我正在尝试使用 case 语句在一行中获得结果,它向我显示正确的结果,但在两行中让我向您展示我的查询,

select  
v.Id,
v.VisitNumber,
v.EndTime as VisitEndTime,
case when srh.ReviewerRole = 2 then srh.CreatedOn end as TeamLeaderApproval,
case when srh.ReviewerRole = 4 then srh.CreatedOn end as ProgramManagerApproval
from
visit v
inner join
SurveyReviewHistory srh on v.Id = srh.VisitId
where
v.Status = 5
and v.Id = 5957

它以这种格式显示结果,

Id  VisitNumber VisitEndTime TeamLeaderApproval ProgramManagerApproval
5957 Visit_U_6 2019-05-26 2019-05-26 NULL
5957 Visit_U_6 2019-05-26 NULL 2019-05-26

如果 Reviewrole 2 然后在 team leader 列中显示 createdon time 或者如果 review role 4 然后在 program manager 列中显示 createdon time,我想在一行中获得结果

希望得到您的建议

谢谢

最佳答案

一种方法是使用条件聚合:

select  v.Id,
v.VisitNumber,
v.EndTime as VisitEndTime,
max(case when srh.ReviewerRole = 2 then srh.CreatedOn end) as TeamLeaderApproval,
max(case when srh.ReviewerRole = 4 then srh.CreatedOn end) as ProgramManagerApproval
from visit v
inner join SurveyReviewHistory srh
on v.Id = srh.VisitId
where v.Status = 5
and v.Id = 5957
group by v.Id, v.VisitNumber, v.EndTime

这个想法非常简单 - 您可以对在原始查询中给出相同结果的所有列进行分组。
然后,您使用 max 获取 case 表达式 的值,因为当您在两个值之间使用 max 时,其中一个值是 null,另一个值将是 max 聚合函数选择的值。

关于sql-server - 使用 case 时如何更改列名? SQL 服务器查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56616730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com