Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要帮助进行sql查询以按列比较数据吗_Php_Mysql_Sql - Fatal编程技术网

Php 需要帮助进行sql查询以按列比较数据吗

Php 需要帮助进行sql查询以按列比较数据吗,php,mysql,sql,Php,Mysql,Sql,我有一个mysql表,它收集每日销售数据(日期、销售额、gst等)。我需要一份select报表,将任何给定日期的每日销售额与去年和前年的同一日期进行比较,以查看我们在前几年的同一天赚了多少钱 为了了解输出表的外观,我在中提供了一个示例表 下面是中的sql表数据 我试过这样的说法: SELECT * FROM sales_chc WHERE MONTH(sale_date) = '1' 当然,它会提供我想要的过滤结果,但我不知道如何在give表示例中显示结果。通过更改WHERE语句中的年和月,您

我有一个mysql表,它收集每日销售数据(日期、销售额、gst等)。我需要一份select报表,将任何给定日期的每日销售额与去年和前年的同一日期进行比较,以查看我们在前几年的同一天赚了多少钱

为了了解输出表的外观,我在中提供了一个示例表

下面是中的sql表数据

我试过这样的说法:

SELECT * FROM sales_chc WHERE MONTH(sale_date) = '1'

当然,它会提供我想要的过滤结果,但我不知道如何在give表示例中显示结果。

通过更改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