2014-01-15 4 views
0

У меня есть условие, когда я хочу отобразить статус одобренного или отклоненного. Мне была предоставлена ​​база данных, созданная кем-то и в беспорядке. Не структурировано. У меня есть таблица с именами и process_code, как показано ниже, например:В SQL Query используйте CASE для печати желаемого результата, если условие выполнено.

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

То, что я хочу достигнуть, если process_code 7, он будет возвращать статус Отклонено. Если process_code отличается от 7, он вернет Approved.

Это выглядит примерно так:

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

Это не сработало. Может ли кто-нибудь помочь, чтобы исправить мой SQL-запрос.

ответ

2

просто отсутствует end предложения case when и запятая (и не уверены, что вам нужны котировки вокруг process_code).

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

Привет, Алтай. Не заметил этого. – mfmz

0

Прежде всего, необходима запятая перед случае и вам нужно end:

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

Если код на самом деле целое число, возможно, потребуется сделать сравнение без одинарных кавычек.

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; 
+1

Как вы догадались dbms? –

Смежные вопросы