我正在尝试显示订单数据,显示第一列中订单的年份,第二列中的月份。另外,按月,按年和总计显示总计。此外,显示消息“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;
答案 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;