SQL仅使用1组数据将两列合并为一列

时间:2015-02-02 22:35:03

标签: sql

在同一行,我有愚蠢的数据 我有专栏aCust, bCust, aPart, bPart, aSM, bSM, aSales, bSales.

我希望将Cust组合在一起,partsSM组合在一起,同时保持Sales分开。有些行在a和b中都有数据,有些a是空的,有些b是空的。我该如何结合这个?如果a和b中都有数据,则它始终相同(销售除外)。

2 个答案:

答案 0 :(得分:1)

尝试此查询。它看起来很奇怪但会完成这项工作。您没有指定您正在使用的RDBMS(Oracle,MySQL,SQL Server等)。这就是为什么我没有使用ISNULL之类的东西。

select 
    case when aCust is null then bCust else bCust end as Cust,
    case when aPart is null then bPart else bPart end as Part,
    case when aSM is null then bSM else bSM end as SM,
    aSales, bSales
from
    tbl

答案 1 :(得分:0)

您可以使用coalesce()

执行此操作
select coalesce(aCust, bCust) as Cust,
       coalesce(aPart, bPart) as Part,
       coalesce(aSM, bSM) as SM,
       aSales, bSales
from table;

这将为每个字段选择第一个非NULL值。