SQL在购买最后一件商品时的月销售额

By simon at 2018-02-07 • 0人收藏 • 18人看过

我正试图从数据库中提取一份销售报告,其中包括 在尾随销售给每个客户的物品计数3个月,再加上 描述同一时期购买的最新产品。 数据库有以下2个表格: * Customers表格:*

销售表:
所以,假设我们现在在2018年2月,例如,如果我运行query
我应该得到以下结果:
其中第-1列包含1月-2日销售给客户的物品的数量12月份出售的物品数量以及品牌和型号列
包含该客户最新购买的细节。请注意,如果一个
客户在报告的时间内没有购买,它的名字仍然出现
与0 /空值。
编辑: *我避免提到我迄今为止所做的一切来保持这个问题
为了读者的时间而缩短。但是,自从带领一些人
认为我正试图把我的工作卸下来,让我解释一下我的工作
至今。
我把它们放在一起降低查询
([Fiddle](http://sqlfiddle.com/#!9/3dd9771/3/0“Fiddle”)):
SELECT Customers.CustName AS 'Customer', Sales.PurchDate AS 'Date of  
Purchase', Sales.Make AS 'Make', Sales.model AS 'Model'
FROM Customers LEFT OUTER JOIN Sales
ON Customers.CID = sales.CID AND Sales.PurchDate >= 
adddate(adddate(last_day(curdate()), INTERVAL 1 DAY), INTERVAL -4 MONTH)
ORDER BY CustName ASC, PurchDate DESC
这给出了以下结果:
由于显示了3次滚动,因此正在满足要求
一个月的时间框架,包括客户d没有买任何东西
期。所以,我的问题是*:1.如何创建与每月每销售计数的列顾客?我知道如何作为独立的查询来计算每个月的计数,但我对如何去做在相同的结果集中超过一个月,更不用说结合上述结果表。我认为它必须做的与子查询(也许?),但这是高于我的联赛,所以一些指针和方向将不胜感激。
  2.我如何获得?ñ只有每个客户的最新购买(或者如果完全没有购买,则为空)从目前为止我已经得到了结果表?
感谢adva为您的时间,任何帮助将不胜感激。

1 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

你可以尝试这样的事情 -

SELECT C.CustName
      ,COUNT(CASE WHEN MONTH(CURRDATE)-1 = MONTH(PurchDate) THEN 1 ELSE 0 END) -1
      ,COUNT(CASE WHEN MONTH(CURRDATE)-2 = MONTH(PurchDate) THEN 1 ELSE 0 END) -2
      ,COUNT(CASE WHEN MONTH(CURRDATE)-3 = MONTH(PurchDate) THEN 1 ELSE 0 END) -3
      ,MAX(PurchDate)
      ,Make
      ,Model
FROM Customers C
INNER JOIN Sales S ON C.CID = S.SID
GROUP BY C.CustName, Make, Model
希望这可以帮助你。

登录后方可回帖

Loading...