实际上是否可以旋转T-SQL(2005),以便(出于争论的目的)第一列的行的值成为输出表的列的标题?我意识到这并不是PIVOT真正的目的,而是我所需要的-能够请求一个表的功能,这些列是事先不知道的,因为它们已经作为值输入到表中。即使是骇客也很好,TBH。
2 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
更好的数据透视查询如下:
-- Static PIVOT
WITH PivotData AS
(
SELECT custid, YEAR(orderdate) AS orderyear, qty
FROM dbo.Orders
)
SELECT custid, [2002], [2003], [2004]
FROM PivotData
PIVOT(SUM(qty) FOR orderyear IN([2002],[2003],[2004])) AS P;
我认为通用表表达式(CTE)的样式胜于派生表,因为我认为它更易于理解。Itzik也这样做,因为他在《查询Microsoft SQL Server 2012》一书中建议使用这种样式。
添加回答
举报
0/150
提交
取消