Id Year Values
1 2014 10
1 2015 4
1 2016 7
1 2017 17
2 2014 5
2 2015 6
2 2016 7
2 2017 9
答案应该
Id 2014 2015 2016 2017
----------------------
1 10 4 7 17
2 5 6 7 9
我尝试如下
Select *
from crosstab(select id,value,year from table)
As res(id int,year int,year int,year int,year int,year int);
答案 0 :(得分:0)
除了使用crosstab()
之外,还有一个选择是使用GROUP BY
和一些聚合函数,例如MAX()
和CASE END
来进行透视。
作为额外的好处,这是ANSI SQL,因此它将在大多数RDBMS系统中运行。
SELECT
Id
, MAX(CASE WHEN <table>.Year = 2014 WHEN <table>.Values ELSE 0 END) AS 2014
, MAX(CASE WHEN <table>.Year = 2015 WHEN <table>.Values ELSE 0 END) AS 2015
...
...
FROM
<table>
GROUP BY
<table>.Id