1

我正在尝试复制从 sybase 数据库生成的表,我没有代码但可以访问数据库。

我几乎完美地复制了表格,但是因为我使用了联合,所以我有重复的行,它们应该合并:

select distinct id, dn, pn, null as sp
from dn
union
select id, 'DN', 'PN', sp
from sp
order by id

但我生产,例如:

 pn,    dn,         pn,          sp

'110','Liversage','Consultant', null

'110','DN       ','PN        ','Cardiac'

基本上我希望空值被心脏填充,而 DN 和 PN 以及第二行合并到第一行?

4

1 回答 1

0

为什么不做这样的事情:

SELECT ID, COALESCE(A.dn, B.dn), COALESCE(A.pn, B.pn), COALESCE(A.sp,B.sp)
FROM dn A
    LEFT OUTER JOIN sp B
         ON A.id = B.id 

这将从每个表中选择第一个非空值。我对您的表格的了解有限,无法给出完整的答案,但是您可能会对这种方法有更好的运气,因为联合不会做您似乎希望它做的事情。

于 2012-06-24T08:51:01.967 回答