Пример данных выглядит так:
![enter image description here](https://i.stack.imgur.com/X8kce.png)
цель:
Если у нас одинаковые 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
Желаемый результат должен выглядеть так:
![enter image description here](https://i.stack.imgur.com/3X3iQ.png)
Я пытался добиться этого с помощью:
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
Но это не дает мне правильного результата:
![enter image description here](https://i.stack.imgur.com/wOdBN.png)