我正在创建一个查询以获取每个季度的数据。
我在user_target
表quarter1
,quarter2
,quarter3
和quarter4
中有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 ...