SQL中的数据透视表不使用Aggegate函数

时间:2018-02-17 04:56:25

标签: sql-server pivot-table

我正在使用SQL Server 2012。我有像

这样的表格
col1   col2   col3
 1     abc     AA
 2     xyz     BB
 3     def     CC

我想将此表格转换为

col1   col2  col3_AA  col3_BB  col3_CC
 1     abc    AA
 2     xyz              BB
 3     def                       CC

请编辑表格格式。我无法做到

2 个答案:

答案 0 :(得分:1)

条件聚合可能会帮助您

select  col1, col2,
        max(case when col3 = 'AA' then col3 end) col3_AA,
        max(case when col3 = 'BB' then col3 end) col3_BB,
        max(case when col3 = 'CC' then col3 end) col3_CC
from table
group by col1, col2
order by col1  

答案 1 :(得分:0)

试试这个

<强> 1。静态PIVOT查询。

例如,如果列“ITEM_HEAD_ID”值只能是1,2和3,那么这就是您所需要的。根据您提供的数据,您可以使用以下查询:

SELECT *, (ISNULL([1], 0 ) + ISNULL([2], 0) + ISNULL([3], 0)) AS [Total]
FROM   (SELECT [TRXID],
               [ITEM_HEAD_ID],
               [ITEM_HEAD_AMT]
        FROM   [Table]) AS t
       PIVOT (MAX([ITEM_HEAD_AMT])
             FOR [ITEM_HEAD_ID] IN ([1], [2], [3])) AS p; 

注意:[表格]是表格的名称。 结果:

TRXID   1   2   3   Total
6   100.00  100.00  300.00  500.00
7   100.00  100.00  300.00  500.00