between来表示日期?

0kjbasz6  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(276)

我需要一个两个不同的值相同的列,但在不同的日期范围,这是我正在做的

  1. SELECT `sales-store-id`,
  2. ((SUM (`gen-acute-sales-after-returns`) AS `totalGenericSales` ,
  3. (SUM(`eth-acute-sales-after-returns`) AS `totalEthicalSales`,
  4. SUM(`sales-after-returns`) AS `totalSales` WHERE `date-s` BETWEEN '2018-11-01' AND '2018-11-12')
  5. AND
  6. ((SUM (`gen-acute-sales-after-returns`)) AS `totalGenericSalesPM` ,
  7. (SUM(`eth-acute-sales-after-returns`)) AS `totalEthicalSalesPM`,
  8. SUM(`sales-after-returns`) AS `totalSalesPM`
  9. FROM `sales` WHERE `date-s` BETWEEN '2018-10-01' AND '2018-10-12')
  10. GROUP BY`sales-store-id`

它是工作时,为单一日期范围,但添加多个日期范围后,它给出语法错误

3pmvbmvn

3pmvbmvn1#

使用union all对不同日期范围的子查询进行分组可以实现这一点。

  1. SELECT `sales-store-id`,
  2. SUM(GenericSales) AS TotalGenericSales,
  3. SUM(EthicalSales) AS TotalEthicalSales,
  4. SUM(Sales) AS TotalSales,
  5. SUM(GenericSalesPM) AS TotalGenericSalesPM,
  6. SUM(EthicalSalesPM) AS TotalEthicalSalesPM,
  7. SUM(SalesPM) AS TotalSalesPM
  8. FROM
  9. (
  10. SELECT `sales-store-id`,
  11. `gen-acute-sales-after-returns` AS GenericSales,
  12. `eth-acute-sales-after-returns` AS EthicalSales,
  13. `sales-after-returns` AS Sales,
  14. 0.0 AS GenericSalesPM,
  15. 0.0 AS EthicalSalesPM,
  16. 0.0 AS SalesPM
  17. FROM `sales`
  18. WHERE `date-s` BETWEEN '2018-11-01' AND '2018-11-12'
  19. UNION ALL
  20. SELECT `sales-store-id`, 0, 0, 0,
  21. `gen-acute-sales-after-returns`,
  22. `eth-acute-sales-after-returns`,
  23. `sales-after-returns`
  24. FROM `sales`
  25. WHERE `date-s` BETWEEN '2018-10-01' AND '2018-10-12'
  26. ) q
  27. GROUP BY `sales-store-id`
展开查看全部
snz8szmq

snz8szmq2#

您可以尝试使用条件聚合

  1. SELECT `sales-store-id`,
  2. SUM (case when `date-s` BETWEEN '2018-11-01' AND '2018-11-12' then `gen-acute-sales-after-returns` end) AS `totalGenericSales` ,
  3. SUM(case when `date-s` BETWEEN '2018-11-01' AND '2018-11-12' then `eth-acute-sales-after-returns` end) AS `totalEthicalSales`,
  4. SUM(case when `date-s` BETWEEN '2018-11-01' AND '2018-11-12' then `sales-after-returns` end) AS `totalSales`,
  5. SUM (case when `date-s` BETWEEN '2018-10-01' AND '2018-10-12' then `gen-acute-sales-after-returns` end ) AS `totalGenericSalesPM` ,
  6. SUM(case when `date-s` BETWEEN '2018-10-01' AND '2018-10-12' then `eth-acute-sales-after-returns` end) AS `totalEthicalSalesPM`,
  7. SUM(case when `date-s` BETWEEN '2018-10-01' AND '2018-10-12' then `sales-after-returns` end) AS `totalSalesPM`
  8. FROM `sales`
  9. GROUP BY`sales-store-id`

相关问题