我有一张这样的表:
Id Code Value
----------- -------------------- -----------
1 A 100
2 B 100
3 C 220
4 A 150
5 C 300
6 D 120
7 E 120
这是我的期望:
Code1 Value1 Code2 Value2 Code3 Value3
----------- ----------- ----------- ----------- ----------- -----------
A 100 B 100 C 220
A 150 C 300 D 120
E 120
我应该在这种情况下使用PIVOT(以及如何执行此操作)或正常选择查询吗?
答案 0 :(得分:2)
这也不是使用数据透视表,但是如果您需要将项目分组为按ID排序的3个组,并且ID有间隙,就像有时会发生一样,这应该这样做:
select
ROW,
max(case when COL = 0 then Code end) as Code1,
max(case when COL = 0 then Value end) as Value1,
max(case when COL = 1 then Code end) as Code2,
max(case when COL = 1 then Value end) as Value2,
max(case when COL = 2 then Code end) as Code3,
max(case when COL = 2 then Value end) as Value3
FROM (
select
(row_number() over (order by ID)-1) % 3 as COL,
(row_number() over (order by ID)-1) / 3 as ROW,
Code,
Value
from
data
) X
group by ROW
这将根据bit_number增加ID来计算行号和列号,然后使用group by将结果拆分为3个组。
答案 1 :(得分:1)
也许n
在这里没用。
PIVOT