2013-05-09 15 views
0

我試圖向我的查詢添加一個名爲Ready的列,該列用於檢查Complete的總和是否等於Total與地點'Y'如果爲真,則爲'N'如果爲假。在同一查詢中比較SUM(CASE ... END)的列

這裏是我的查詢作品生產4列

SELECT pc.Sub, 
    SUM(CASE WHEN `SheetStatus` LIKE 'Complete' THEN 1 ELSE 0 END) AS 'Complete', 
    SUM(CASE WHEN `SheetStatus` LIKE 'Not started' THEN 1 ELSE 0 END) AS 'Not Started', 
    SUM(CASE WHEN `CheckSheet` LIKE '%' THEN 1 ELSE 0 END) AS 'Total'   
FROM `pc` 
Group By pc.Sub WITH ROLLUP 

我只是無法弄清楚如何創建額外的列,如果它是不可能的。 問候

+0

所以你想改變基於條件的表?爲什麼你想這樣做? – 75inchpianist 2013-05-09 03:45:06

+0

@ 75inchpianist他希望將第五列添加到從他的select中的其他兩列計算出的select中。 – Patashu 2013-05-09 03:45:38

+0

你有沒有嘗試類似'CASE當SUM(CASE當'SheetStatus \'LIKE'完成'然後1 ELSE 0 END)= SUM(CASE當'CheckSheet \'樣'%'然後1 ELSE 0 END)然後'是'其他'N''準備'? – Patashu 2013-05-09 03:47:02

回答

0

試試這個:

SELECT pc.Sub, 
    SUM(IF(`SheetStatus`='Complete',1,0) AS 'Complete', 
    SUM(IF(`SheetStatus`='Not started',1,0) AS 'Not Started', 
    SUM(IF(`CheckSheet` LIKE '%',1,0) AS 'Total' 
    IF(SUM(IF(`CheckSheet` LIKE '%',1,0) = SUM(IF(`SheetStatus`='Complete',1,0),"Y","N") AS Ready 
FROM `pc` 
Group By pc.Sub WITH ROLLUP 
1

儘量外選擇

SELECT `Complete`, 
     `Not Started`, 
     `Total`, 
     CASE WHEN `Complete` = `Total` THEN 'Y' ELSE 'N' END `Ready` 
    FROM (
SELECT pc.Sub, 
    SUM(CASE WHEN `SheetStatus` LIKE 'Complete' THEN 1 ELSE 0 END) AS `Complete`, 
    SUM(CASE WHEN `SheetStatus` LIKE 'Not started' THEN 1 ELSE 0 END) AS `Not Started`, 
    SUM(CASE WHEN `CheckSheet` LIKE '%' THEN 1 ELSE 0 END) AS `Total`   
FROM `pc` 
GROUP BY pc.Sub WITH ROLLUP) t 
+0

令人驚訝的是我所需要的,非常感謝peterm,這是我第一次發佈到堆棧 – ironoverload 2013-05-09 03:57:16