这是我要查询的结果,以显示现场主管的日常工作报告卡。所有记录都是正确的,但我想在标题中显示日期或用0填充空值。
[DECLARE @Pivot_Column [nvarchar](max);
DECLARE @Query [nvarchar](max);SELECT @Pivot_Column= COALESCE(@Pivot_Column+',','')+
QUOTENAME([DAY]) FROM (SELECT DISTINCT datepart(day,statusupdatedate) as [Day]
FROM tbl_trn_RawData where StatusUpdateDate is not null and DATENAME(MONTH,StatusUpdateDate)='July')
Tab SELECT @Query='SELECT [FE Name], '+@Pivot_Column+'FROM(select [FE name],count(StatusByFE) as [Total],
datepart(day,statusupdatedate) as [Day] FROM tbl_trn_RawData where StatusUpdateDate is not null group by
[FE name],statusupdatedate) Tab1 PIVOT(SUM([Total]) FOR [Day] IN ('+@Pivot_Column+')) AS Day ORDER BY Day.
[FE name]'EXEC sp_executesql @Query
我的结果是这样的:
答案 0 :(得分:0)
这应该做您想要的。
create table tbl_trn_RawData([FE name] varchar(50),StatusUpdateDate date, StatusByFE int)
go
insert into tbl_trn_RawData
values ('Ananesh Raghav','2018-07-12',3),
('Ananesh Raghav','2018-07-14',5),
('Lokendra Raghav','2018-07-14',1),
('Narinder Singh','2018-07-12',2),
('Narinder Singh','2018-07-13',5)
go
DECLARE @Pivot_Column [nvarchar](max);
DECLARE @Pivot_ColumnNotNull [nvarchar](max);
DECLARE @Query [nvarchar](max);
SELECT @Pivot_Column= COALESCE(@Pivot_Column+',','')+ QUOTENAME([DAY]),
@Pivot_ColumnNotNull= COALESCE(@Pivot_ColumnNotNull+',','')+ QUOTENAME([DAY])+'=coalesce('+QUOTENAME([DAY])+',0)'
FROM (SELECT DISTINCT datepart(day,statusupdatedate) as [Day]
FROM tbl_trn_RawData
where StatusUpdateDate is not null
and DATENAME(MONTH,StatusUpdateDate)='July')
Tab
SELECT @Query='
;with p as (
SELECT top 100 percent [FE Name], '+@Pivot_Column+
'FROM(select [FE name],count(StatusByFE) as [Total],
datepart(day,statusupdatedate) as [Day]
FROM tbl_trn_RawData where StatusUpdateDate is not null
group by [FE name],statusupdatedate) Tab1
PIVOT(SUM([Total])
FOR [Day] IN ('+@Pivot_Column+')) AS Day
ORDER BY Day.[FE name]
)
SELECT [FE Name], '+@Pivot_ColumnNotNull+' FROM p'EXEC sp_executesql @Query