在SQL Query中,如果满足条件,则使用CASE打印所需的结果

时间:2014-01-15 13:13:07

标签: sql case

我有条件要显示已批准或已拒绝的状态。我被给了一个由某人创建的数据库,并且一团糟。没有结构。我有一个名称和process_code的表,如下所示:

name | process_code
A    |  7
B    |  7
C    |  3
D    |  4
...

我想要实现的是如果process_code为7,它将返回Rejected状态。如果process_code不是7,它将返回Approved。

它看起来像这样:

SELECT name, process_code AS Status 
CASE process_code
WHEN '7' THEN 'Rejected'
ELSE 'Approved'
FROM association

它不起作用。有人可以指导我更正我的SQL查询。

3 个答案:

答案 0 :(得分:2)

错过case case子句的end和逗号(并且不确定你是否需要在process_code周围引用)。

SELECT 
     name, 
     process_code AS Status,
     CASE process_code
       WHEN '7' THEN 'Rejected'
       ELSE 'Approved'
     END
FROM association

答案 1 :(得分:0)

首先,您需要在案例之前使用逗号,并且需要end

SELECT name, process_code AS Status, 
       (CASE process_code
            WHEN '7' THEN 'Rejected'
            ELSE 'Approved'
        END)
FROM association;

如果代码实际上是一个整数,您可能需要在没有单引号的情况下进行比较。

答案 2 :(得分:0)

这些答案对您有用,但您可以这样做:

SELECT name, CASE WHEN process_code='7' THEN process_code+'- Rejected' ELSE process_code+'- Approved' END as Status
FROM association;

如果您的process_code是int,则必须强制转换process_code,然后再加上字符串表达式。

SELECT name, CASE WHEN process_code=7 THEN CAST(process_code as VARCHAR)+'- Rejected' ELSE CAST(process_code as VARCHAR)+'- Approved' END as Status
FROM association;
相关问题