2017-08-18 36 views
-1

我遇到了數據庫的多選問題。我需要做一個選擇,返回一些包含一些處理過的數據的表格,並且它需要在月份的某一天進行排序。要做到這一點,我使用多選擇的問題的MySQL。這是我的代碼:多選與MySQL中的同一張表不起作用

SELECT 
    (SELECT COUNT(*) FROM `table` WHERE `type`=1                    AS 'Total', 
    (SELECT COUNT(*) FROM `table` WHERE `type`=1 and `status` = 0 and `status_cancel` = 0          AS 'Open', 
    (SELECT COUNT(*) FROM `table` WHERE `type`=1 and `status_cancel` = 1              AS 'Cancel', 
    (SELECT COUNT(*) FROM `table` WHERE `type`=1 and `date_finish` is not null and `status_cancel` = 0       AS 'Finish', 
    (SELECT COUNT(*) FROM `table` WHERE `type`=1 and `result` >= 0 and `date_finish` is not null and `status_cancel` = 0  AS 'Win', 
    (SELECT COUNT(*) FROM `table` WHERE `type`=1 and `result` < 0 and `date_finish` is not null and `status_cancel` = 0   AS 'Loss' 

現在,它的總的所有行返回我的表,但我不能這樣做的回報是按天分組,幫助我,好嗎!

的結果必須是這樣的:

Result that i need

+0

更多信息。表格的完整模式是什麼?您正在尋找的輸出是什麼?給出一個示例輸出。你的查詢應該只返回一行,但看起來你不止一個。你在一個月的日子裏是什麼意思? – kaineub

+0

當詢問SQL查詢問題時,請爲查詢中引用的所有表運行「SHOW CREATE TABLE」,並將結果包含在您的問題中。這將給我們提供信息,所以我們不必猜測你的列,數據類型,索引等。 –

回答

0

我覺得你說我怎麼能按年月日時我的查詢都達子查詢。我會把它改成這種情況的陳述。嘗試這樣的事情

SELECT DATE(date_finish) as `date`, count(*) as 'Total', 
     SUM(CASE WHEN `status` = 0 AND `status_cancel` = 0 THEN 1 ELSE 0 END) as 'Open', 
     SUM(CASE WHEN `status_cancel` = 1 THEN 1 ELSE 0 END) as 'Cancel', 
     SUM(CASE WHEN `date_finish` is not null and `status_cancel` = 0 THEN 1 ELSE 0 END) as 'Finish', 
     SUM(CASE WHEN `result` >= 0 AND `date_finish` is not null AND `status_cancel` = 0 THEN 1 ELSE 0 END) as 'Win', 
     SUM(CASE WHEN `result` < 0 AND `date_finish` is not null AND `status_cancel` = 0 THEN 1 ELSE 0 END) as 'Loss' 
from `table` 
WHERE `type` = 1 
group by DATE(date_finish) 

TEST:需要http://rextester.com/HCRIU11065

+0

是的男人!非常感謝!那就是我尋找的東西! –