数据透视表排序日期时间列
问题描述:
我有以下部分的sql语句来支持动态列。列(ClosingDate)的数量是可变的:数据透视表排序日期时间列
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(ClosingDate + '_'+ c.col)
from #TmpT
cross apply
(
select 'Cnt' col
union all
select 'TT'
) c
FOR XML PATH('') , TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
的问题是,ClosingDate
列地转化为varchar
,他们被排序为varchar
,而不是date
。
有没有办法订购datetime
?谢谢!
答
你可以试试先将它们转化为自己日期:
select @cols = STUFF((SELECT distinct ',' +
QUOTENAME(CONVERT(VARCHAR(8),ClosingDate,112) + '_'+ c.col)
from #TmpT
cross apply
(
select 'Cnt' col
union all
select 'TT'
) c
FOR XML PATH('') , TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
它实际工作。我已经以CONVERT(VARCHAR(8),ClosingDate,112)格式传递了ClosingDate字段,并且查询仍然将日期命令定义为varchar,但由于格式为yyyymmdd,所以日期按照严格的顺序排列。非常感谢! – gae