我正在创建一个查询以获取每个季度的数据。
我在user_targetquarter1quarter2quarter3quarter4中有4个字段
每季度有3个月,

quater1 - Jan Feb March
quater2 - Apr May June
quater3 - July Aug Sept
quater4 - Oct Nov Dec

现在,当我把$P{month}设为一月、二月或三月时,我应该得到第1季度的数据。类似地,当我把$P{month}作为Apr、May或June时,我应该得到quarter2等的数据。我不想为不同的月份编写4个不同的查询。
一个查询本身就可以吗?
我对quater1的查询如下:
select    sum(t.quarter1) as quarter ,
          s.name as sname, f.name as fname, m.name as pname
from user_target t, res_salesteam s,
     account_fiscalyear f,res_users u, res_users ru, account_month m
where t.salesteam_id = s.id and
      t.fiscal_year = f.id and
      f.id = $P{fiscalyear} and
      p.fiscalyear_id = f.id and
      m.id = $P{month} and
      u.parent_id = ru.id and
      ru.id = $P{name} and (u.tri_salesteam = s.id or ru.tri_salesteam = u.id)
group by s.name, f.name, m.name order by s.name

最佳答案

您可以使用CASE ... END逻辑结构

SELECT sum(CASE
    WHEN $P{month} IN ('Jan','Feb','March') THEN t.quarter1
    WHEN $P{month} IN ('Apr','May','June') THEN t.quarter2
    WHEN $P{month} IN ('July','Aug','Sept') THEN t.quarter3
    WHEN $P{month} IN ('Oct','Nov','Dec') THEN t.quarter4
    ELSE 0 END) AS quarter,
    s.name as sname, f.name as fname, m.name as pname
  FROM ...

07-24 09:38
查看更多