2011-12-15 49 views
0

使用Toad for MySQL,我試圖創建一個查詢,告訴我返回的記錄是否在任何類別中通過或失敗,以便我可以告訴用戶更正它們。MySql的通過或失敗Case語句

我當前查詢的結果是這樣的:

ID uat_resource風險培訓load_performance pay_associated 1839年
1846年約翰洪水無無無無 1849年馬特·伯爾N/A馬特·伯爾N/AN/A

我想設置它,這樣當任何事情都是空時,它被認爲是失敗,如果風險是不適用或沒有,那麼它也會失敗,因爲總是存在風險。

SELECT cr.ID, 
    cr.risks, 
    cr.training, 
    cr.load_performance, 
    cr.pay_associated 
FROM requests.requests cr 
WHERE cr.id IN (SELECT di.change_request_id 
        FROM dcs_item di 
        WHERE di.current_level = 3) 
    AND cr.production_dt IN ('2012/01/10','2011/01/11') 
ORDER BY ID; 

我試圖做這樣的事情....

SELECT cr.ID, 
    (case when lower(cr.uat_resource) in ('','n/a','none') then 
    'FAIL' else 'PASS') as Test, 
    cr.risks, 
    cr.training, 
    cr.load_performance, 
    cr.pay_associated 
FROM requests.requests cr 
WHERE cr.id IN (SELECT di.change_request_id 
        FROM dcs_item di 
        WHERE di.current_level = 3) 
    AND cr.production_dt IN ('2012/01/10','2011/01/11') 
ORDER BY ID; 
+0

,什麼是你的結果嗎?它錯誤,給你錯誤的數據? – Robert 2011-12-15 19:10:31

回答

0

你需要一個 「結束」 您的case語句:

SELECT cr.ID, 
    (case when lower(cr.uat_resource) in ('','n/a','none') then 
    'FAIL' else 'PASS' END) as Test, 
    cr.risks, 
    cr.training, 
    cr.load_performance, 
    cr.pay_associated 
FROM requests.requests cr 
WHERE cr.id IN (SELECT di.change_request_id 
        FROM dcs_item di 
        WHERE di.current_level = 3) 
    AND cr.production_dt IN ('2012/01/10','2011/01/11') 
ORDER BY ID; 
+0

謝謝。我剛剛有那個大腦放屁,意識到這一點。猜猜它只是一個閒逛的一週。 :) – user1100571 2011-12-15 19:10:20