我有一个mysql表,它收集每日销售数据(日期,销售,gst等)。我需要一个select语句来比较任何给定日期与去年和前一年相同日期的每日销售情况,以查看我们在前几年当天所做的数量。
为了了解输出表的外观,我在jsfiddle中有一个示例表。
这是sqlfiddle中的sql表数据。
我试过这句话:
SELECT * FROM sales_chc WHERE MONTH(sale_date) = '1'
它当然为我提供了我想要的过滤结果,但我无法弄清楚如何在给定表示例中显示结果。
答案 0 :(得分:1)
通过在WHERE语句中更改年份和月份,您可以获得所需月份/年份组合的报告。
SELECT sn.sale_date AS SaleY0 , sn.EFTPOS AS EFTPOSY0, sn.total AS totalY0,
s1.sale_date AS SaleY1 , s1.EFTPOS AS EFTPOSY1, s1.total AS totalY1,
s2.sale_date AS SaleY2 , s2.EFTPOS AS EFTPOSY2, s2.total AS totalY2
FROM sales_chc sn
LEFT JOIN sales_chc S1
ON s1.sale_date=(sn.sale_date -INTERVAL 1 YEAR)
LEFT JOIN sales_chc S2
ON s2.sale_date=(sn.sale_date -INTERVAL 2 YEAR)
WHERE YEAR(SN.sale_date)=2016 AND MONTH(SN.sale_date)=1