SQL pivot unpivot查询

时间:2017-05-22 14:20:44

标签: sql pivot unpivot

我没有很多使用pivot / unpivot的经验,可以使用一些帮助。我有一个SQL查询,数据为:

Category Account   Name           Value
001      1234     BALANCE_01      800
001      1234     BALANCE_02      1000
001      1234     BALANCE_03      1500
001      4567     BALANCE_01      900
001      4567     BALANCE_02      1200
001      4567     BALANCE_03      800

我需要它显示为:

Category Account   BALANCE_01  BALANCE_02  BALANCE_03
001       1234       800         1000         1500
001       4567       900         1200         800

我该怎么做?

谢谢, MARCIE

2 个答案:

答案 0 :(得分:0)

一种方法是使用条件聚合:

/p:PrecompileBeforePublish=true 
/p:UseMerge=true 
/p:SingleAssemblyName=AppCode

答案 1 :(得分:0)

我只是一个小组

SELECT Category, Account, 
       SUM(CASE WHEN NAME='BALANCE_1' THEN Value ELSE 0 END) AS BALANCE_1,
       SUM(CASE WHEN NAME='BALANCE_2' THEN Value ELSE 0 END) AS BALANCE_2,
       SUM(CASE WHEN NAME='BALANCE_3' THEN Value ELSE 0 END) AS BALANCE_3
FROM Your_Table_You_Did_Not_Name
GROUP BY Category, Account

注意,如果您有多个具有相同类别,帐户和名称的行,则会失败 - 但您没有告诉我们如何处理。