【问题标题】:Using Where clause in case mysql [closed]在mysql的情况下使用Where子句[关闭]
【发布时间】:2016-10-04 14:16:58
【问题描述】:

以下是我的查询,我正确获取了相关状态值的总数。但我需要特定时间范围内的这些值。获取下面的总值是我的查询。

SELECT 
SUM(CASE 
     WHEN `status` = 'saved_for_review' THEN 1
     ELSE 0
   END) AS SavedCases,
SUM(CASE 
     WHEN STATUS = 'send_to_warehouse' THEN 1
     ELSE 0
   END) AS SendtoWareshouse,
SUM(CASE 
     WHEN STATUS = 'send_to_cep' THEN 1
     ELSE 0
   END) AS SendtoCEP,
   SUM(CASE 
     WHEN STATUS = 'Successful' THEN 1
     ELSE 0
   END) AS Closed 
FROM table_details

但我需要特定时间范围内的值,例如

where date(created_on) between '20160701' and '20160901'

如何将这个 where 子句添加到上述查询中。任何帮助将不胜感激。

【问题讨论】:

  • 任何 sql 教程都会告诉你 where 子句在 from 子句之后。
  • 删除 But i need values in specific time range like 就可以了。
  • 以前我给表格起了一些别名,这就是为什么我没有得到那个。添加了我的答案。请回复否决票。
  • 你应该把整个问题连同你的答案一起删除,这是没有意义的。

标签: mysql switch-statement case where between


【解决方案1】:

首先,只需编写SUM(status='saved_for_review') SavedCases 即可,而且更简单、更快捷。至于WHERE 子句,在FROM 子句后面加上即可。

SELECT 
    SUM(status = 'saved_for_review') SavedCases,
    SUM(status = 'send_to_warehouse') SendtoWarehouse,
    SUM(status = 'send_to_cep') SendtoCEP,
    SUM(status = 'Successful') Closed 
FROM table_details
WHERE DATE(created_on) BETWEEN '20160701' AND '20160901'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多