首页 > 解决方案 > SQL Pivot 分组依据?

问题描述

我有一个工作数据透视表,但我想知道是否有办法按数据透视表分组。对于我有的数据透视表代码...

SELECT *  FROM 
    (SELECT  
          UserPivot.[parties]
          ,UserPivot.[Accounts]
          ,UserPivot.[CurrentAmount] 
          ,UserPivot.[Plus / Negative]
          FROM UserPivot) AS BaseData

PIVOT(
    SUM(BaseData.[CurrentAmount])
    FOR BaseData.[parties]
    IN([Toms])
) AS PivotTable

一旦运行,我得到...

Accounts | Plus / negative | Toms
Bank             plus         100
Bank           negative        60

以上是正确的,我需要 [plus/negative] 列来显示用户发生的所有操作!但我会添加一个分组依据来显示一个帐户的总和,并将它们按不同的帐户类型分组,例如我想要以下结果......

   Accounts  | Toms
    Bank        40

这也是通过数据透视表完成的,这一点很重要。

谢谢大家的建议!

标签: sqlsql-server

解决方案


不要为此使用枢轴。只需使用条件聚合:

SELECT UserPivot.Accounts,
       SUM(CASE WHEN UserPivot.[Plus / Negative] = 'plus' THEN UserPivot.CurrentAmount
                WHEN UserPivot.[Plus / Negative] = 'negative' THEN 
- UserPivot.CurrentAmount
           END) as net_amount
FROM UserPivot
GROUP BY UserPivot.Accounts;

推荐阅读