【问题标题】:Without aggregation SQL Server pivot table没有聚合 SQL Server 数据透视表
【发布时间】:2016-05-16 08:09:33
【问题描述】:

表名int_table。列是col_name, col_value

col_name    col_value
----------------------
 A            aa
 B            bb
 C            cc
 D            dd
 D            ddd
 E            eee

我需要这样的输出

A        B          C           D        E
---------------------------------------------
aa       bb         cc          dd       eee
                                ddd     

这是样本值。我的表有30多行这样的。

这是我的尝试:

select * 
from int_table 
pivot (max(col_value) 
       for col_name in (A, B, C, D, E)) as tt

使用聚合函数显示错误。

如何使用pivot 获得此解决方案?

我使用的是 SQL Server 2012

【问题讨论】:

    标签: sql-server sql-server-2012 pivot


    【解决方案1】:

    试试这个:

    select A,B,C,D,E        
    from (
       select col_name, col_value,
              row_number() over (partition by col_name order by col_value) as rn
       from int_table
    ) as src
    pivot (max(col_value) for col_name in (A,B,C,D,E)) as pvt
    

    这里的技巧是使用ROW_NUMBER窗口函数产生的计算列,以便区分具有相同col_name值的记录。

    Demo here

    【讨论】:

    • +1, OP 注释:要获取空白值而不是 NULLS,您可以在以下内容中使用 COALESCE:select COALESCE(A,'') AS A, COALESCE(B,'') AS B, COALESCE(C,'') AS C, COALESCE(D,'') AS D, COALESCE(E,'') AS E from (....
    猜你喜欢
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多