0

我有以下查询:

SELECT Artist_no, SUM(purchasedate BETWEEN '2012-07-01' AND '2012-07-31') / 
                  SUM(purchasedate BETWEEN '2011-07-01' AND '2011-07-31')
FROM Sales

这成功地返回了我的 CD 表“销售额”中销售额增加/减少的百分比。但是,我希望更改代码以列出 2011 年 7 月和 2012 年 7 月的具体日期,而不是今年 7 月,而不是去年 7 月。我知道现在运行这个新查询将获得相同的结果,但是我希望如果您在 100 年后执行此查询,该查询将测试 2111 年 7 月和 2112 年 7 月。

我自己尝试过这样做,但是当我运行代码时,我的答案是 NULL。不应该是这样,下面的新代码在这里(即使它不正确):

SELECT SUM(purchasedate = YEAR(CURDATE() AND MONTH(purchasedate) = 7))
     / SUM(purchasedate = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR) AND MONTH(purchasedate) = 7)) 
FROM Sales

其次,如果有一个新艺术家有一张新CD,它会除以0,并且不会包含在结果中,但是例如2011年7月为0,2012年7月为398,显然应该包含这个在我的结果中。

4

1 回答 1

1

尝试比较格式化的日期字符串,如下所示:

   SELECT SUM(date_format(purchasedate, '%m-%Y') = CONCAT('07-',YEAR(CURDATE()))
         / SUM(date_format(purchasedate, '%m-%Y') = 
                         CONCAT('07-',YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR)) 
   FROM Sales
于 2012-12-03T19:04:16.237 回答