没有聚合的数据透视表列出所有非字符内容
Pivot without aggregate to list all contents non character
我有
ab
cd
1
a
2
b
3
b
8
c
我要
a
b
c
1
2
8
NULL
3
NULL
我试过了
select a, b, c
from aib
pivot
(
max(ab)
for cd in (a,b,c)
) k
但我无法列出所有值,因为聚合函数是枢轴函数所必需的
您需要一些东西来区分结果行,行号似乎可以解决问题。
declare @aib table (ab int, cd varchar(1));
insert into @aib (ab, cd)
values
(1,'a'),
(2,'b'),
(3,'b'),
(8,'c');
with cte as (
select *
, row_number() over (partition by cd order by ab) rn
from @aib
)
select a, b, c --, rn
from cte
pivot (
max(ab) for cd in (a,b,c)
) k;
注意:如果您将示例数据的 DDL+DML 添加到未来的问题中,它会更容易提供帮助。
我有
ab | cd |
---|---|
1 | a |
2 | b |
3 | b |
8 | c |
我要
a | b | c |
---|---|---|
1 | 2 | 8 |
NULL | 3 | NULL |
我试过了
select a, b, c
from aib
pivot
(
max(ab)
for cd in (a,b,c)
) k
但我无法列出所有值,因为聚合函数是枢轴函数所必需的
您需要一些东西来区分结果行,行号似乎可以解决问题。
declare @aib table (ab int, cd varchar(1));
insert into @aib (ab, cd)
values
(1,'a'),
(2,'b'),
(3,'b'),
(8,'c');
with cte as (
select *
, row_number() over (partition by cd order by ab) rn
from @aib
)
select a, b, c --, rn
from cte
pivot (
max(ab) for cd in (a,b,c)
) k;
注意:如果您将示例数据的 DDL+DML 添加到未来的问题中,它会更容易提供帮助。