0

我有 2 张桌子 STOCK 和 ITEMS,

我正在尝试获取一份报告,显示购买的商品总数(ITEMS 表-items.quanto),商品的总销售额(ITEMS 表-我假设(items.quanto*items.it_unlist)和描述(STOCK 表-stock.desc1)按月(ITEMS 表-items.odr_date)和分类(这是 STOCK 表-stock.assoc 中的一个字段)。

所有者想要 2011 年、2012 年和 2013 年年初至今每个月的此信息

因此,该项目的总销售额以及该项目在 2011 年、2012 年、2013 年年初至今的总销售额

这是我的查询

select items.item, items.quanto, SUM(items.QUANTO*items.it_unlist) as [total cost], stock.desc1, items.it_sdate from items
inner join
stock
on
stock.number = items.item
where IT_SDATE  between '2011-01-01 00:00:00.0' and '2011-12-31 00:00:00.0'
group by items.item, items.quanto, stock.desc1, items.it_sdate
order by IT_SDATE

我希望按月获得每件商品的总销售额和数量,但这是我自己想出来的……哈哈

任何帮助表示赞赏。

4

2 回答 2

0
select
  item,
  right(convert(varchar(8), it_sdate, 3), 5) theMonth,
  sum(quanto) totalQuantity,
  sum(quanto * it_unlist) totalSales,
  max(stock.desc1) descr,
  max(stock.assoc) assoc
from 
  items inner join stock on 
    items.item = stock.number
where
  it_sdate > '2011-01-01'
group by
  item,
  right(convert(varchar(8), it_sdate, 3), 5)
order by
  item,
  theMonth

http://sqlfiddle.com/#!3/246d3/18/0

于 2013-11-01T18:11:55.897 回答
0

如果 items 表的 item 列是主键,那么当您尝试显示总销售额和数量时,您将无法显示每个项目编号。而且,IT_DATE 列在表中每个月只包含一个日期,那么只有下面的查询是可能的,否则我们需要编写其他查询。如果没有,您可以选择。

select i.quanto, sum(QUANTO * it_unlist) as [total list], 
s.desc1, i.it_sdate from items i inner join stock s on (s.number = i.item)
where IT_SDATE > 2011-01-01
group by i.it_sdate order by IT_SDATE;
于 2013-11-01T18:12:17.990 回答