Group/Aggregate SQL 中列的不同值

Group/Aggregate on different values of a column in SQL

数据库是 SQL Server 2008

Table答:

'Identifier' 列中的值:A、B、C、D、E、F 'Balances' 列中的值:10、100、30、50、70、55

期望的结果集:

'Identifier_New' 列中的值:Z、Y、X sum(Balances) 列中的值:40、170、105

求和余额的逻辑映射:

标识符 A 和 C 的总和和分组余额为 Z。 标识符 B 和 E 的总和和集团余额作为 Y。 标识符 D 和 E 的总和和集团余额作为 X。

我可以在单个 sql 中获得上述期望的结果集吗?

谢谢

试试这个:

SELECT x.v AS Identifier_New, SUM(Balances)
FROM mytable
CROSS APPLY (SELECT CASE Identifier
                      WHEN 'A' THEN 'Z'
                      WHEN 'C' THEN 'Z'
                      WHEN 'B' THEN 'Y'
                      WHEN 'E' THEN 'Y'
                      WHEN 'D' THEN 'X'
                      WHEN 'F' THEN 'X'
                    END ) AS x(v)
GROUP BY x.v 

Demo here

SELECT CASE WHEN Identifier = 'A' or Identifier = 'C' THEN 'Z'
    WHEN Identifier = 'B' or Identifier = 'E' THEN 'Y'
    WHEN Identifier = 'D' or Identifier = 'F' THEN 'X' 
    END AS [Identifier_New],
    SUM(Balances) AS [Sum of Balances]
FROM TABLE A
GROUP BY CASE WHEN Identifier = 'A' or Identifier = 'C' THEN 'Z'
    WHEN Identifier = 'B' or Identifier = 'E' THEN 'Y'
    WHEN Identifier = 'D' or Identifier = 'F' THEN 'X' 
    END