首页 > 解决方案 > 不聚合的枢轴列出所有非字符内容

问题描述

我有

抗体 光盘
1 一个
2 b
3 b
8 C

我想

一个 b C
1 2 8
无效的 3 无效的

我试过了

select a, b, c
from aib
pivot
(
    max(ab)
    for cd in (a,b,c)
) k

但我无法列出所有值,因为聚合函数是枢轴函数的必需品

标签: sqlsql-servertsqlpivot

解决方案


你需要一些东西来区分你的结果行,行号似乎可以解决问题。

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


推荐阅读