请帮帮我
我是postgres数据库中的新人
select
case
when daftar ='sd' then kouta
end as a,
case
when daftar = 'smp' then kouta
end as b,
case
when daftar = 'sma' then kouta
end as c
from
ajaran
GROUP BY
tahun
和结果错误
[错误]错误:列“ajaran.daftar”必须出现在GROUP BY中 子句或在聚合函数中使用LINE 1:选择大小写时的情况 daftar ='sd'然后kouta结束,例如......
我在MySQL中尝试相同的查询,没有错误和成功分组 如何在pgsql中使用group?
我想通过tahun分组</ p>
答案 0 :(得分:0)
据推测,您希望sum()
或max()
如下:
select tahun,
max(case when daftar = 'sd' then kouta end) as a,
max(case when daftar = 'smp' then kouta end) as b,
max(case when daftar = 'sma' then kouta end) as c
from ajaran
group by tahun;
我认为错误非常清楚。 。 。 daftar
和kouta
既不是group by
中的键,也不是查询中的聚合函数。如果没有进一步的指导,例如样本数据和期望的结果,哪种聚合最合适是不明确的。
答案 1 :(得分:0)
分组时,您必须为每个组返回一个行,但您的选择不会将值汇总到一行。
提供汇总,例如使用max()
:
select
tahun,
max(case when daftar ='sd' then kouta end) a,
max(case when daftar = 'smp' then kouta end) b,
max(case when daftar = 'sma' then kouta end) c
from ajaran
group by tahun