Я пытаюсь получить результаты простого запроса соединения в сводном формате.
Обмен примером запроса:
if object_id('tempdb.dbo.#t') is not null
drop table #t
create table #t (
EmpName nvarchar(1000),
CaseNumber nvarchar(1000),
[WeekDay] nvarchar(1000)
)
insert into #t values ('Sam','SM100','Monday')
insert into #t values ('Sam','SM100','Wednesday')
insert into #t values ('Sam','SM100','Thursday')
insert into #t values ('Peter','PT200','Monday')
insert into #t values ('Peter','PT200','Tuesday')
insert into #t values ('Peter','PT200','Wednesday')
insert into #t values ('Peter','PT200','Thursday')
insert into #t values ('Peter','PT200','Friday')
insert into #t values ('Peter','PT200','Saturday')
insert into #t values ('Peter','PT200','Sunday')
select * from #t
-- Expected output tabular format
С запрос Джона ...
;with cte as
(
Select *
From (Select *,Val=1 From #t) src
Pivot (sum(Val) for weekday in ([Sunday],[Monday],[Tuesday],[Wednesday],[Thursday],[Friday],[Saturday]) )pvt
)
select EmpName, CaseNumber,
Case When Sunday = 1 then 'Yes' when isnull(Sunday,'') = '' then 'No' end Sunday,
Case When Monday = 1 then 'Yes' when isnull(Monday,'') = '' then 'No' end Monday,
Case When Tuesday = 1 then 'Yes' when isnull(Tuesday,'') = '' then 'No' end Tuesday,
Case When Wednesday = 1 then 'Yes' when isnull(Wednesday,'') = '' then 'No' end Wednesday,
Case When Thursday = 1 then 'Yes' when isnull(Thursday,'') = '' then 'No' end Thursday,
Case When Friday = 1 then 'Yes' when isnull(Friday,'') = '' then 'No' end Friday,
Case When Saturday = 1 then 'Yes' when isnull(Saturday,'') = '' then 'No' end Saturday
from cte
Я предпочитаю не использовать слишком много падежных выражений ...