如何在SQL Server中按年份分组记录

sel*_*raj 2 sql sql-server sql-server-2008

我有一个名为Product的表,它显示如下数据:

---------------------------------
l  TYPE   l PERIOD l  BALANCE   l
l   Auto  l  2015  l     5      l     
l   Car   l  2015  l     2      l     
l   Bus   l  2015  l     45     l   
l   Auto  l  2016  l     2      l     
l   Car   l  2016  l     6      l     
l   Bus   l  2016  l     50     l  
l   Auto  l  2017  l     12     l     
l   Car   l  2017  l     16     l     
l   Bus   l  2017  l     10     l  
---------------------------------
Run Code Online (Sandbox Code Playgroud)

我需要查询此表,以便结果基于类似于下面的年份:

---------------------------------------------------------
l TYPE    l BALANCE 2015 l BALANCE 2016 l BALANCE 2017 l
l   Auto  l     5        l       2      l     12       l
l   Car   l     2        l       6      l     16       l
l   Bus   l     45       l       50     l     10       l
---------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的查询,但没有运气.

你的帮助非常有用,

提前致谢.

sag*_*agi 5

您可以像这样使用条件聚合:

SELECT t.type,
       MAX(CASE WHEN period = 2015 then balance end) as BALANCE_2015,
       MAX(CASE WHEN period = 2016 then balance end) as BALANCE_2016,
       MAX(CASE WHEN period = 2017 then balance end) as BALANCE_2017
FROM Product t
GROUP BY t.type
Run Code Online (Sandbox Code Playgroud)

您可以添加更多列,具体取决于您要显示的年份.