2016-12-17 110 views
1

请帮我如何解决必须出现在GROUP BY子句或聚合函数中使用

我newbi在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 

和结果误差

[Err] ERROR: column "ajaran.daftar" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: select case when daftar='sd' then kouta end as a,case when ...

我想在MySQL中查询相同的查询,并且没有错误和成功分组 如何在pgsql中使用group by?

我想按tahun

this my table

+2

MySQL是不正确的,让无差错运行查询,但MySQL是比PostgreSQL的那么严格(和大多数其他数据库系统,真的)。 – Dai

+0

你期望输出什么数据?你知道'GROUP BY'是什么意思吗?在这种情况下,“tahun”是什么意思?它与“kouta”有什么关系? – Dai

回答

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; 

我认为错误是相当清楚的。 。 。 daftarkouta既不在group by中,也不在您的查询中的聚合函数中。如果没有进一步的指导,例如样本数据和期望的结果,哪种汇总最合适不明确。

+0

谢谢,所以我应该添加像sum,max等聚合... – faza

+0

@faza。 。 。是的,这是主意。 –

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 
相关问题