[英]Update row based on other rows sql
我有一张桌子:
带有数据的表详细信息:
ID ReferenceNumber Status AuditPeriod CustomerStatus
1 112 Expired 1/1/2016
2 113 Pending 1/1/2016
3 114 Expired 1/1/2016
4 115 Pending 2/1/2016
5 116 Approved 2/1/2016
6 117 Pending 2/1/2016
7 118 Approved 3/1/2016
8 119 Approved 3/1/2016
现在,我需要通过基于状态列与auditperiod分组来更新CustomerStatus列。
条件1:如果在审计期间至少有一个状态为“已过期”,则“ 客户 状态”为“未完成” 。
条件2:如果在审核期间至少有一个状态为Pending,则customerstatus为Pending 。
Condition3:如果所有状态都被批准,则customerStatus为Completed 。
最终输出应如下:
ID ReferenceNumber Status AuditPeriod CustomerStatus
1 112 Expired 1/1/2016 Not Completed
2 113 Pending 1/1/2016 Not Completed
3 114 Expired 1/1/2016 Not Completed
4 115 Pending 2/1/2016 Pending
5 116 Approved 2/1/2016 Pending
6 117 Pending 2/1/2016 Pending
7 118 Approved 3/1/2016 Completed
8 119 Approved 3/1/2016 Completed.
请让我知道是否可以在不导出到另一个临时表的情况下完成(使用单个更新)
请让我知道我是否需要任何信息
您可以使用以下查询进行尝试,
SELECT t1.ID, t1.ReferenceNumber, t1.Status, t1.AuditPeriod, t2.CustomerStatus from table1 t1
join (
select AuditPeriod,
CASE
WHEN SUM(CASE WHEN Status = 'Expired' then 1 else 0 end) > 0
THEN 'Not Completed'
WHEN SUM(CASE WHEN Status = 'Pending' then 1 else 0 end) > 0
THEN 'Pending'
ELSE 'Completed'
END CustomerStatus
from table1
group by AuditPeriod) t2
on t1.AuditPeriod = t2.AuditPeriod;
我得到了以下结果,
希望这对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.