如何显示2000年4月,5月和6月的一周中每天每一天的产品5的已售出金额之和?

时间:2019-06-14 11:41:58

标签: oracle

我需要执行一个查询,以显示产品5的销售月份,产品名称,每天的周一至周日每天售出的数量(例如,周一售出30、10、60我必须对其进行汇总,并将其显示在“星期一”列下为100)我希望有一个功能表,其中所有数据均正确显示。我仅在oracle上完成此任务。除了每天的amount_sold的总和之外,我已经做了所有事情,然后我必须进行汇总,因此每个月4月,5月和6月我都有3行,其中包含所有数据。

select t.calendar_month_name as "SALES_MONTH", 
upper(concat(substr(p.prod_name,1,instr(p.prod_name,' ')-2),' &'))
||''|| concat(substr(p.prod_name,-1,instr(' ',p.prod_name)-1), '')
||''|| concat(substr(p.prod_name,instr(p.prod_name, ' ')), '')
||'('|| p.prod_id ||')'|| '' PRODUCT_NAME, t.calendar_month_number, t.time_id, t.DAY_NUMBER_IN_WEEK,
s.amount_sold, count(distinct t.day_number_in_week), 
sum(case when t.day_number_in_week = 1 then s.amount_sold else 0 end) as MONDAY

from products p
join sales s on p.prod_id = s.prod_id
join times t on t.time_id = s.TIME_ID
where
p.prod_id = 5 and 
s.time_id = t.time_id and
t.calendar_year = 2000 and
t.calendar_quarter_number = 2 and
s.amount_sold > 0 
group by t.calendar_month_name, upper(concat(substr(p.prod_name,1,instr(p.prod_name,' ')-2),' &'))
||''|| concat(substr(p.prod_name,-1,instr(' ',p.prod_name)-1), '')
||''|| concat(substr(p.prod_name,instr(p.prod_name, ' ')), '')
||'('|| p.prod_id ||')'|| '',t.calendar_month_number, t.time_id, t.DAY_NUMBER_IN_WEEK,
s.amount_sold
order by t.calendar_month_number, t.time_id, t.day_number_in_week;

1 个答案:

答案 0 :(得分:0)

您必须使用分组依据和汇总