我有以下 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 初学者。
您可以使用
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