没有聚合的数据透视表列出所有非字符内容

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 添加到未来的问题中,它会更容易提供帮助。