一次旋转一个表4行

时间:2015-12-10 16:58:24

标签: sql sql-server pivot data-scrubbing

我试图通过以下方式弄清楚如何在SQL Server中透视表:

enter image description here

每当值为" PEAK"时,我希望它从一个新行开始。基本上它看起来像这样。

col1 col2 col3 col4 119 KH ON PEAK 4 K1 ON PEAK 356 KH OFF PEAK 38 K1 ... ...

1 个答案:

答案 0 :(得分:1)

老实说,我真的很想知道源数据是如何存储的。这似乎是一项非常多的工作,如果数据已经存储在正确的行中,那么分割它会更容易...... < / p>

粗略地说,这是我必须要做的......除了枢轴之外的所有事情......

select bar, (row_number() over (order by a.b)-.001)/4 grpOrder,
floor((row_number() over (order by a.b)-.001)/4) as grp
from foo
cross join (Select 1 as b) a

这是oracle尝试的截图我现在无法让SQL小提琴与SQL服务器一起使用。

enter image description here

从这里你可以根据morder的十进制值来转动数据,每一行都将基于grp。

我不得不使用交叉连接来获取一个值来订购,但我需要它是一致的,因此表foo的顺序将被保留,尽管这绝不是保证。我建议在拆分数据中添加ID或序列,否则订单可能会损坏。如果这样做,我们将不再需要交叉连接。并且可以将over order by中的order by设置为该自动编号值。

我假设从这里你可以弄清楚如何转动。因为MOrder的每个十进制值在每个组中都是相同的。

和完整的支点(再次使用oracle)

enter image description here

如果每组中的#值是动态的,那么我们必须编写一些动态SQL来处理这些情况;我在这里没有这样做。