我需要执行一个查询,以显示产品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;
答案 0 :(得分:0)
您必须使用分组依据和汇总