2011-12-15 90 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