2013-12-12 2 views
0

У меня есть оператор SQL, который объединяет две таблицы, но меня недавно попросили добавить условия условия. Условия работают, но проблема, с которой я сталкиваюсь, заключается в том, что каждое условие создает дубликат столбца.SQL Слияние нескольких столбцов в один столбец

case when s.Department = 'Aero' then '(OA)' else '' end as Blah, 
case when s.Department = 'Terrent' then '(OT)' else '' end as Blah, 
case when s.Department = 'Vertigo' then '(OMG)' else '' end as Blah 

This causes me to end up with 

a| b | c | d | Blah | Blah | Blah| 
| | | | (OT) | (OA) | (OT)| 
| | | | (OT) |  |  | 
| | | | (OT) | (OA) |  | 
| | | | (OT) | (OA) | (OT)| 
| | | |  |  | (OT)| 

Как я могу использовать «case» cmd и иметь все результаты, если применимо, отображаться под 1 столбцом?

a| b | c | d | Blah | 
| | | | (OT) | 
| | | | (OT) | 
| | | | (OT) | 
| | | | (OT) | 
| | | | (OA) | 
| | | | (OA) | 
| | | | (OA) | 
| | | | (OT) | 
| | | | (OT) | 
| | | | (OT) | 
+0

Я запутался. Как отдел может принимать значения «Aero», «Террента» и «Вертиго» - как подразумевается в первой строке ваших желаемых результатов? –

ответ

1

Вы бы использовать один случай заявление вместо трех:

(case when s.Department = 'Aero' then '(OA)' 
     when s.Department = 'Terrent' then '(OT)' 
     when s.Department = 'Vertigo' then '(OMG)' 
     else '' 
    end) as Blah 
+0

Гордон Линофф, спасибо. – stackrack

+0

Последний вопрос. Теперь, как я могу взять готовый продукт (есть несколько объединений в моем заявлении) и вставить его в постоянную таблицу? – stackrack

+0

@stackrack. , , Вы можете использовать 'select. , , в. , .' (поместите 'in' перед' from'). Кроме того, вы можете настроить представление, которое возвращает результаты, но фактически не материализует таблицу. –

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