我正在尝试编写一个查询,告诉我去年每周销售的单位数量。我开始是这样得到去年的数字......
select i.[INV ITEM Ext ID],i.[INV ITEM Description], sum(d.[ar orderd qty]) as 'Total Units Sold'
from [inv items] i
join [ar order detail] d on (d.[ar orderd item id] = i.[INV ITEM Ext ID])
join [ar order] o on (o.[AR ORDER Document #] = d.[AR ORDERD Document #])
where o.[AR ORDER Document #] not like '%Ret%' and d.[ar orderd date] > '9/16/2013' and d.[AR ORDERD Qty] >= '0'
group by i.[INV ITEM Ext ID], i.[INV ITEM Description]
order by i.[INV ITEM Ext ID]
这返回了去年销售的所有商品。现在我需要证明那一周卖的那些物品或者那周没卖。这是我试图运行的代码,但它不会返回上述查询中的所有项目,只是销售的项目。
select i.[INV ITEM Ext ID],i.[INV ITEM Description], sum(d.[ar orderd qty]) as 'Total Units Sold'
from [inv items] i
join [ar order detail] d on (d.[ar orderd item id] = i.[INV ITEM Ext ID])
join [ar order] o on (o.[AR ORDER Document #] = d.[AR ORDERD Document #])
where o.[AR ORDER Document #] not like '%Ret%' and d.[ar orderd date] between '9/16/2013' and '9/22/2013' and d.[AR ORDERD Qty] >= '0'
group by i.[INV ITEM Ext ID], i.[INV ITEM Description]
order by i.[INV ITEM Ext ID]
有没有办法在sum语句中运行一个具有我的条件的查询?例如,输出为(inv item ext id)(inv item description)(销售总单位数9 / 16-9 / 22)(销售总单位数9 / 23-9 / 29)(销售总单位数9 / 30-10) / 6)......我需要在所有查询中使用相同的产品,以便将其粘贴到Excel中。
答案 0 :(得分:0)
此类查询的通用名称为pivot
或cross-tab
。条件聚合是一种通用的方法,尽管许多数据库支持其他方法:
select
i.[INV ITEM Ext ID],
i.[INV ITEM Description],
sum(d.[ar orderd qty]) as 'Total Units Sold',
sum(case when
d.[ar orderd date] >= '2013-09-16' and
d.[ar orderd date] < '2013-09-23'
then d.[ar orderd qty]
else 0 end) as 'total Units sold 9/16-9/22',
sum(case when
d.[ar orderd date] >= '2013-09-23' and
d.[ar orderd date] < '2013-09-30'
then d.[ar orderd qty]
else 0 end) as 'total Units sold 9/23-9/29'
from
[inv items] i
inner join
[ar order detail] d
on d.[ar orderd item id] = i.[INV ITEM Ext ID]
inner join
[ar order] o
on o.[AR ORDER Document #] = d.[AR ORDERD Document #]
where
o.[AR ORDER Document #] not like '%Ret%' and
d.[ar orderd date] > '9/16/2013' and
d.[AR ORDERD Qty] >= '0'
group by
i.[INV ITEM Ext ID],
i.[INV ITEM Description]
order by
i.[INV ITEM Ext ID];
如果您正在使用MS Access,则可能需要更改case
语句以使用IIF
。