我有条件要显示已批准或已拒绝的状态。我被给了一个由某人创建的数据库,并且一团糟。没有结构。我有一个名称和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查询。
答案 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;