如何透视结果表SQL

问题描述 投票:0回答:1

我有以下 MSSQL 语句:

SELECT *, YEAR(STARTDATE) AS YEAR
FROM  TABLE
WHERE  ID = 3438

结果是这样的:

身份证 开始日期 音量 年份
3438 2025年1月1日 1000 2025
3438 01-01-206 1000 2026
3848 2027年1月1日 1000 2027

我想产生以下结果:

身份证 2025 2026 2027
3438 1000 1000 1000

我尝试使用 PIVOT 功能,但似乎无法实现该功能。可能是因为我是 SQL 初学者。

sql pivot
1个回答
0
投票

您可以使用

GROUP BY
并使用带有聚合的
CASE
表达式(在这种情况下可以使用
MIN
MAX
SUM
)来执行此操作:

SELECT 
  ID, 
  SUM(CASE WHEN YEAR(STARTDATE) = 2025 THEN VOLUME END) AS VOLUME_2025, 
  SUM(CASE WHEN YEAR(STARTDATE) = 2026 THEN VOLUME END) AS VOLUME_2026, 
  SUM(CASE WHEN YEAR(STARTDATE) = 2027 THEN VOLUME END) AS VOLUME_2027
FROM TABLE
WHERE ID = 3438
GROUP BY ID
© www.soinside.com 2019 - 2024. All rights reserved.