我有以下表格:
|Type | Year | amount |
_______________________
|t1 | 2001 | 40 |
|t1 | 2000 | 50 |
|t2 | 2003 | 30 |
|t2 | 2003 | 20 |
|t3 | 2004 | 10 |
我希望将其显示为:
| type |2001 |2000 |2003 |2004|
|______________________________
| t1 |40 |50 |0 |0 |
| t2 | 0 |0 | 50 |0 |
| t3 |0 |0 | 0 |10 |
我不想硬编码这些年,我需要在POstgresql 8.4中做到这一点,它不支持:
CREATE EXTENSION
IF NOT EXISTS tablefunc;
我之前使用以下代码转移了表:more explanation for the following code is here
sum(CASE
WHEN year = 2000 THEN
total
ELSE 0
END)
其中每年total =sum (amount)
和我在另一个CTE中计算过它。但是当时这些年已经知道,但是对于上面的表格,我需要循环阅读这些年份并阅读每一年,然后计算sum(amount)
,并且主表中的年份可能会发生变化。