我需要使用group by with rollup查询查询

时间:2013-12-13 06:02:14

标签: mysql aggregate-functions rollup

我正在尝试显示订单数据,显示第一列中订单的年份,第二列中的月份。另外,按月,按年和总计显示总计。此外,显示消息“Yearly Total”和“Grand Total”而不是空值。结果按年和月排序。

我一直收到错误(“字段列表”中的“未知列”“order_date”)任何人都可以帮助我吗?

 select coalesce(year(order_date), 'Grand Total') as Year
, case when year(order_date) is null then ' ' else coalesce(month(order_date), 'Year Total') end as 
Month 
, AmntDue 
, NumberOfBooksPurch  
from (    
     select   year(order_date) as Year 
            , month(order_date) as Month
            ,  sum(quantity * order_price) as AmntDue    
            ,  count(order_id) as NumberOfBooksPurch    
            from a_bkorders.order_headers   
            join a_bkorders.order_details using (order_id)       
            group by year(order_date), month(order_date), order_id with rollup
     ) tbl;

1 个答案:

答案 0 :(得分:1)

order_date是原始表中的值,但子查询不会返回它,因此您无法在外部查询中引用它。使用子查询返回的别名:

select coalesce(Year, 'Grand Total') as Year
, case when Year is null then ' ' else coalesce(Month, 'Year Total') end as 
Month 
, AmntDue 
, NumberOfBooksPurch  
from (    
     select   year(order_date) as Year 
            , month(order_date) as Month
            ,  sum(quantity * order_price) as AmntDue    
            ,  count(order_id) as NumberOfBooksPurch    
            from a_bkorders.order_headers   
            join a_bkorders.order_details using (order_id)       
            group by Year, Month, order_id with rollup
     ) tbl;