STUFF Not Sorting Dates in SQL Pivot

Emm*_*mma 1 sql sql-server

我正在尝试创建一个包含周日期列的数据透视表 - stuff 命令没有按 dateweek 排序,我做错了什么吗?日期不按任何顺序出现,例如 2019-01-07, 2020-02-24,2003-01-13,2020-12-21,2019-01-21

select product, expected, CAST(weekdue AS date) as dateweek into #tempemma from weekdueview 


DECLARE @cols  AS NVARCHAR(MAX)='';


set @cols = stuff((select distinct ',' + QUOTENAME(c.dateweek) 
        FROM (SELECT TOP(99.99) PERCENT dateweek FROM #tempemma ORDER BY dateweek desc) c 
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'') 

select @cols 

   DECLARE @query AS NVARCHAR(MAX)='';

set @query = 
'SELECT * from 
(
select product, expected, dateweek from #tempemma
) src
pivot 
(
sum(expected) for dateweek in (' + @cols + ')
) piv
' 


   execute(@query)

   drop table #tempemma
Run Code Online (Sandbox Code Playgroud)

如何按日期周列对此进行排序?

Joh*_*tti 5

这是一个对列进行排序的小例子

Declare @YourTable table (dateweek date)
Insert Into @YourTable values
('2019-01-07'),('2019-01-07'),('2020-02-24'),('2003-01-13'),('2020-12-21'),('2019-01-21')

Select stuff((Select distinct  ',' + QUOTENAME(CONVERT(varchar(10),dateweek, 23)) 
               From @YourTable
               Order By 1
               For XML Path('') )
            ,1,1,'') 
Run Code Online (Sandbox Code Playgroud)

注意: 修正了拉努敏锐的观察力。