SQL Server 2008 R2-查询以获取按月销售的总销售额和数量

Posted

技术标签:

【中文标题】SQL Server 2008 R2-查询以获取按月销售的总销售额和数量【英文标题】:SQL Server 2008 R2- Query to get total sales and qty sold by month 【发布时间】:2013-11-01 17:39:31 【问题描述】:

我有 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

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

感谢任何帮助。

【问题讨论】:

【参考方案1】:
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

【讨论】:

还有一件事,我公司的所有者...想要几乎相同的结果,但没有总销售额,也没有 2012 年 10 月 1 日至 2013 年 9 月 30 日之间的月份,他们想要最后一个当我们在 PO 上订购该项目时,我看到的问题是,要引入“PURCHASE”表,需要加入“PURITEM”表,因为项目# 在 PURITEM 中但不在 PURCHASE 中....PURITEM 会与 items.number = puriitem.number 结合,然后如果可能的话,puritem.ponumber = purchase.ponumber 将与puritem 结合购买? 是的,您只需将这些表添加到 FROM 子句中:FROM purchase p inner join p.ponumber = pi.ponumber 上的 puritem pi,pi.number = i 上的 puritem pi 内连接项 i。 number, items i inner join stock s on i.number = s.number【参考方案2】:

如果 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;

【讨论】:

以上是关于SQL Server 2008 R2-查询以获取按月销售的总销售额和数量的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 2008R2 上以毫秒为单位返回 DATEDIFF

如何在SQL Server 2008R2中查找未使用的列

更新表以按分组列显示总计 SQL Server 2008 R2

获取每个月的第一个日期 SQL Server 2008 R2

在 SQL Server 2008 R2 中重命名数据库时出错

SQL2008和sql2008 r2有啥区别