2014-10-22 3 views
0

Я пытался исследовать онлайн о том, как объединить выражения «If» в мой запрос. Предположим, я хотел создать запрос, чтобы создать дополнительный столбец с именем «Описание», а затем включить оператор if else, например «If Value =« A »then Description =« A », If Value =" B " then Description = «B», так далее и т. д. Проблема в том, что у меня есть минимальный доступ (а не админ) к базам данных. Я не могу создавать таблицы. Я могу только запрашивать таблицы в oracles и экспортировать их. будет ли это быть проблемой с точки зрения создания дополнительного столбцаIF ELSE Statement и вставить новую колонку

Оригинал:

ID Value 
1 A 
2 B 
3 C 

Хотите что-то вроде:

ID Value Description(New Column) 
1 A  Apple 
2 B  Bacon 
3 C  Candy 

Хорошо. Я понятия не имею, что я делаю внизу, но это было бы так? Где мне вставить новый столбец с именем «Описание»?

Select A.ID, B.Value 
From Table A 
Join Table B 
On A.ID = B.ID 
Where ID in ('1','2','3') 
If b.Value = 'A' then 
    (Description = "Apple") 
If b. value = 'B' then 
    (Description = "Bacon") 
Group by A.ID, B.Value 

ответ

1

вы можете сделать это, как показано ниже

SELECT A.ID, A.Value, B.Description 
FROM TABLEA A 
JOIN (SELECT 'A' as Value, 'Apple' as Description from dual 
     UNION 
     SELECT 'B' as Value, 'Bacon' as Description from dual 
    ) T 
on A.Value= B.Value 
3

Вы можете использовать CASE:

SELECT A.ID, B.Value, 
     CASE B.Value 
      WHEN 'A' THEN 'Apple' 
      WHEN 'B' THEN 'Bacon' 
      WHEN 'C' THEN 'Candy' 
     END AS Description 
FROM TableA A 
JOIN TableB B ON A.ID = B.ID 
0

Я не знаю, почему вы должны присоединиться к таблице себе. Кроме того, я полагаю, вы действительно не пытаетесь сделать это со столом с именем «таблица».

CASE выполнит эту работу, как в ответе Бармара. Я считаю DECODE более читабельным, когда логика проста, но это действительно вопрос вкуса. CASE более гибкая, что не является вопросом вкуса, но вам здесь не нужна эта гибкость.

select id 
     ,value 
     ,decode(value 
       ,'A', 'Apple' 
       ,'B', 'Bacon' 
       ,'C', 'Candy') as Description 
from table;