TSQL - Unpivot多列

Sve*_*enB 4 t-sql sql-server pivot unpivot crosstab

如何在"one"中取消多列的拆分?

现在我对每列都有一个univot,但这会产生很多空行.

请看截图. 在此输入图像描述

在顶部,您可以看到输入数据.目前我正在中间的桌子上用这段代码:

SELECT [ID], [RowNumber],  [Year], [Sales]  FROM (
        SELECT ID, RowNumber, [Sales 2013] as [2013], [Sales 2014] as [2014]
        FROM mytable) p     UNPIVOT (
        [Sales] FOR [Year] IN ([2013], [2014])  )AS unpvt ;
Run Code Online (Sandbox Code Playgroud)

但我认为,由于实际数据包含更多列以及更多年的处理时间,因此最好进入底层表结构.

这是一个小提琴样本数据.

希望你能告诉我一个到达那里的方法.谢谢.

Mar*_*ith 8

SELECT [ID],
       [RowNumber],
       [Year],
       Sales,
       Budget
FROM   mytable
       CROSS APPLY (VALUES (2013, [Sales 2013], [Budget 2013]),
                           (2014, [Sales 2014], [Budget 2014]) ) 
                     V([Year], Sales, Budget) 
Run Code Online (Sandbox Code Playgroud)

SQL小提琴