【发布时间】:2019-08-02 09:05:35
【问题描述】:
示例数据如下所示:
目标是:
如果我们有相同的ControlNo 和ActionDate(包括时间)
以及Action = 'Changed status' 和'Print Quote' 然后'Print Quote' 的组合
如果我们有相同的ControlNo和ActionDate(包括时间)
以及 Action = 'Changed status' 和 'Reason for quote' 然后 'Changed Status' 的组合
查询示例:
declare @TempTable table (
Name varchar(50),
ControlNo int,
PolicyNumber varchar(50),
Action varchar(max),
ActionDate datetime
)
insert into @TempTable values
('Jim',54321, NULL, 'Changed status','2019-01-29 09:56:12.820' ),
('Jim',54321, NULL, 'Print Quote','2019-01-29 09:56:12.820' ),
('Brian',12345, NULL, 'Changed status','2019-02-15 11:18:07.356' ),
('Brian',12345, NULL, 'Reason for quote','2019-02-15 11:18:07.356')
select * from @TempTable
我试图通过以下方式实现:
select
name,
ControlNo,
PolicyNumber,
case
when action in( 'Changed status','Print Quote') then 'Print Quote'
when action in ('Changed status', 'Reason for quote') then 'Changed Status'
else Action end as Action
from @TempTable
group by
name,
ControlNo,
PolicyNumber,
Action
但它没有给我正确的结果:
【问题讨论】:
标签: sql sql-server tsql sql-server-2012 case