2010-04-15 42 views
1

我们的数据库中有两个变量,分别为OBB2B_OB。有EP代码以及每个EP可能有以下4种组合之一:如何在SQL语句中合并特定列值

EP OB B2B_OB 
--- -- ------ 
3 X 
7  X 
11 
14 X X 

我想要做的就是将X的在所获取的名单相结合,这样我就可以有A或B值单个EP 。我的条件是:

IF (OB IS NULL AND B2B_OB IS NULL) THEN TYPE = A 
IF (OB IS NOT NULL OR B2B_OB IS NOT NULL) THEN TYPE = B 

名单我想获取是像这样的:

EP TYPE 
--- ---- 
3 B 
7 B 
11 A 
14 B 

我怎样才能做到这一点我的查询? TIA。

回答

4

(编辑:更正为OR)
这里有一个解决方案(语法上的Postgres测试,但是从我read它应该是相同的)

select ep, 
    case 
    when ob is null and b2b_ob is null then a 
    when ob is not null or b2b_ob is not null then b 
    else null 
    end as type 
from table; 

注:其他null是多余的,但只是想强调默认的其他情况。

+0

非常感谢... – 2010-04-15 08:44:39

+1

貌似CASE的第二行应该是 OB时不为空或b2b_ob不为空,那么B – AndyDan 2010-04-15 17:06:23

+0

@AndyDan,你是对的,更新的答案。 – Unreason 2010-04-16 07:57:46