2016-10-04 2 views
-1

Ниже приведен мой запрос, и я получаю общее количество связанных значений состояния правильно. Но мне нужны эти значения в определенном временном диапазоне. Для получения итоговых значений ниже приведен мой запрос.Использование Where where в случае mysql

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' 

Как я могу добавить, где положение в приведенном выше запросе. Любая помощь будет принята с благодарностью.

+2

Любой учебник по sql сказал бы вам, что предложение 'where' идет после предложения' from'. – Shadow

+1

Удалить 'Но мне нужны значения в определенном временном диапазоне, например', и там вы идете. –

+0

Ранее я дал некоторый псевдоним таблице, поэтому я этого не понял. Добавил мой ответ. Пожалуйста, верните поданный голос. – user3408779

ответ

0

Прежде всего, просто писать 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'