2013-12-12 78 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”,“Terrent”和“Vertigo”的价值 - 正如您期望的结果的第一行所暗示的那样? –

回答

1

你可以使用一个case语句而不是三个:

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

Gordon Linoff,谢谢。 – stackrack

+0

最后一个问题。现在我怎样才能完成产品(我的声明中有多个连接)并将其插入永久表中? – stackrack

+0

@stackrack。 。 。你可以使用'select。 。 。进入。 。 。语句(在'from'之前放入''')。或者,您可以设置一个返回结果的视图,但不实际实现一个表。 –