如何修复PostgreSQL中多个列返回错误

时间:2019-02-07 07:48:01

标签: postgresql

我试图编写代码以从表和按某些列分组的方式获取记录,但是子查询返回“多个”错误。

当我独立编写代码时,我得到了很棒的结果,但是将它们结合起来是一个问题。

select 
    year as Season,
    cal_scheme as Scheme,
    (case when cal_scheme='Mt.Elgon' then '1000'
    when cal_scheme='West Nile' then '2000'
    when cal_scheme='Rwenzori' then '1500' else '' end) as Target,
    min(today::date) as startdatetime,
    max(today::date)-min(today::date) as No_of_days,
    (select count(id) as id from
        kcl_internal_edit where new_farmer='' or new_farmer is null
        group by year, cal_scheme)as growers
from kcl_internal_edit
    group by year, cal_scheme

预期结果如下:

Season Scheme    Target Startdatetime No_of_days  growers
2019   Mt.Elgon  1000   28-10-2019    5            5
2019   West Nile 2000   29-05-2019    10           1
2018   Mt.Elgon  1500   29-08-2018    207          3

1 个答案:

答案 0 :(得分:0)

您的查询应如下所示:

select 
    year as Season,
    cal_scheme as Scheme,
    (case when cal_scheme='Mt.Elgon' then '1000'
    when cal_scheme='West Nile' then '2000'
    when cal_scheme='Rwenzori' then '1500' else '' end) as Target,
    min(today::date) as startdatetime,
    max(today::date)-min(today::date) as No_of_days,
    count(id) FILTER (WHERE new_farmer='' or new_farmer is null) as growers
from kcl_internal_edit
    group by year, cal_scheme;

不需要子选择!