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
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
数据库是 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
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