【问题标题】:Pivot without aggregate to list all contents non character不聚合的枢轴列出所有非字符内容
【发布时间】:2021-07-02 20:08:17
【问题描述】:

我有

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

但我无法列出所有值,因为聚合函数是数据透视函数的必备项

【问题讨论】:

  • 至少,你需要描述你想要什么,而不仅仅是一个神秘的例子。
  • 如何确定列名?为什么不是 a,b 或 a,b,c,d?
  • 问题已编辑,请再看一遍

标签: sql sql-server tsql pivot


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    相关资源
    最近更新 更多