Sql 转置保持秩序

Sql 转置保持秩序,sql,sql-server,Sql,Sql Server,要转换此信息 我正在使用这个查询 SELECT MAX([WM Week]) [WM Week],WKDate,SUM(CAST(CAST([Value] AS DECIMAL(12, 5)) AS INT)) AS Value FROM [dbo].[s_Validation] UNPIVOT (Value FOR WKDate IN ([Sat Qty],[Sun Qty], [Mon Qty],[Tue Qty],[Wed Qty],[Thu Qty],[Fri Qt

要转换此信息

我正在使用这个查询

 SELECT MAX([WM Week]) [WM Week],WKDate,SUM(CAST(CAST([Value] AS DECIMAL(12, 5)) AS INT)) AS Value
FROM [dbo].[s_Validation]
UNPIVOT
   (Value FOR WKDate IN 
      ([Sat Qty],[Sun Qty], [Mon Qty],[Tue Qty],[Wed Qty],[Thu Qty],[Fri Qty])
)AS unpvt
GROUP BY unpvt.WKDate;
但是,我想保留订单:sat数量、sun数量、mon数量等,我通过以下方式获取信息:

有没有办法保持转置句的顺序

SELECT  MAX([WM Week]) [WM Week]
      , WKDate
      , SUM(CAST(CAST([Value] AS DECIMAL(12, 5)) AS INT)) AS [Value]
      , CASE WKDate WHEN 'Sat Qty' THEN 1
                    WHEN 'Sun Qty' THEN 2
                    WHEN 'Mon Qty' THEN 3
                    WHEN 'Tue Qty' THEN 4
                    WHEN 'Wed Qty' THEN 5
                    WHEN 'Thu Qty' THEN 6
                    WHEN 'Fri Qty' THEN 7
            END [OrderKey]
FROM [dbo].[s_Validation]
UNPIVOT
   (Value FOR WKDate IN 
      ([Sat Qty],[Sun Qty], [Mon Qty],[Tue Qty],[Wed Qty],[Thu Qty],[Fri Qty])
)AS unpvt
GROUP BY unpvt.WKDate
ORDER BY [OrderKey];
或者干脆

SELECT  MAX([WM Week]) [WM Week]
      , WKDate
      , SUM(CAST(CAST([Value] AS DECIMAL(12, 5)) AS INT)) AS [Value]
FROM [dbo].[s_Validation]
UNPIVOT
   (Value FOR WKDate IN 
      ([Sat Qty],[Sun Qty], [Mon Qty],[Tue Qty],[Wed Qty],[Thu Qty],[Fri Qty])
)AS unpvt
GROUP BY unpvt.WKDate
ORDER BY CASE WKDate 
                    WHEN 'Sat Qty' THEN 1
                    WHEN 'Sun Qty' THEN 2
                    WHEN 'Mon Qty' THEN 3
                    WHEN 'Tue Qty' THEN 4
                    WHEN 'Wed Qty' THEN 5
                    WHEN 'Thu Qty' THEN 6
                    WHEN 'Fri Qty' THEN 7
            END;

外部应用将允许您取消PIVOT并添加订单列

select      MAX([WM Week]) [WM Week],
            WkDate,
            SUM(CAST(CAST([Value] AS DECIMAL(12, 5)) AS INT)) AS [Value],
from        s_Validation s
outer apply (
            values('Sat Qty', [Sat Qty], 1),
                  ('Sun Qty', [Sun Qty], 2),
                  ('Mon Qty', [Mon Qty], 3),
                  ('Tue Qty', [Tue Qty], 4),
                  ('Wed Qty', [Wed Qty], 5),
                  ('Thu Qty', [Thu Qty], 6),
                  ('Fri Qty', [Fri Qty], 7)
)           v(WkDate, [Value], [Order])
group by    WkDate, [Order]
order by    [Order]

奇怪的是为什么这被否决了。。。