【发布时间】:2015-10-16 10:58:27
【问题描述】:
我有一个返回表格的视图:
cat_name | Jan | Feb | Mar | ... | YEAR
student | 0 | 23 | 12 | ... | 2013
student | 10 | 2 | 8 | ... | 1999
professor| 12 | 9 | 3 | ... | 2015
teacher | 3 | 8 | 5 | ... | 2015
我需要让视图像这样返回:
cat_name | 1999 | 2013 | 2015 | ...
student | 20 | 35 | 0 | ...
professor| 0 | 0 | 24 | ...
teacher | 0 | 0 | 16 | ...
对行求和并选择不同的 cat_name:
SELECT cat_name, "YEAR",
COALESCE("Jan",0)+COALESCE("Feb",0)+COALESCE("Mar",0)+
... +COALESCE("Dec",0) AS sum
FROM view
GROUP BY "YEAR", cat_name, sum;
有没有办法让“YEAR”值列名称?年数不固定,cat_name 的数量也是固定的。
例如,我怎样才能在 (select distinct "YEAR" from view) 中列出一些列表,并在 CASE WHEN "YEAR" = 2014 中使用今年而不是 2013、2014...?
【问题讨论】:
-
选择的结果具有固定数量的列 - 与表数据无关。
标签: sql postgresql pivot