2011-04-04 169 views
0

我的数据库表PE中有两个字段(BIT数据类型),而PER需要编写一个sql case语句来执行以下任务。SQL CASE语句

当PER = 0然后打印“非必需” 当PER = 1,则检查是否PE = 0然后打印“未完成”时PE = 1个打印“已完成”

以下是查询我试图而这是不工作

CASE pc.PER WHEN '0' THEN 'Not Required' 
            WHEN '1' THEN (CASE pc.PE WHEN '0' THEN 'Not Completed' 
         WHEN '1' THEN 'Completed') end as ab 
+0

添加了所有所需的表的'FROM'子句中? – EmCo 2011-04-04 05:43:41

回答

4

我想这可能是更容易把它写成:

CASE 
    WHEN pc.PER = '0' THEN 'Not Required' 
    WHEN pc.PER = '1' AND pc.PE = '0' THEN 'Not Completed' 
    ELSE 'Completed' 
END 

或者你就必须后添加在您的查询中:

CASE pc.PER WHEN '0' THEN 'Not Required' 
      WHEN '1' THEN (CASE pc.PE WHEN '0' THEN 'Not Completed' 
             WHEN '1' THEN 'Completed' 
          END) 
END AS ab 
4

您缺少一个结尾。

CASE pc.PER 
    WHEN 0 THEN 'Not Required' 
    WHEN 1 THEN 
     CASE pc.PE 
      WHEN 0 THEN 'Not Completed' 
      WHEN 1 THEN 'Completed' 
     END 
END as ab 
0

尝试下面的语句来代替:

CASE WHEN pc.PER =0 THEN 'Not Required' 
    WHEN pc.PER =1 THEN 
     CASE WHEN pc.PE = 0 THEN 'Not Completed' 
       WHEN pc.PE = 1 THEN 'Completed' 
    End 
End as ab