我有3个表,名为A、b和C。表a有a列。表B有a列,表c有a、c列。这些表包含如下数据:

我想从A,B,C获得所有数据,其中a=1
我想要的输出如下所示:

但是我从SSMS得到的结果如下所示:

我应该如何重构我的SQL以获得我想要的输出?
例如,我不希望在列中重复值
发布于 2014-12-04 11:30:39
您需要加入这些值,但不只是在a值上,而是在位置上。SQL表表示无序集。我将假设b和c列表示排序。
select a.a, b.b, c.c
from (select a.*, row_number() over (order by a) as seqnum
from a
) a full outer join
(select b.*, row_number() over (partition by a order by b) as seqnum
from b
) b
on a.a = b.a and a.seqnum = b.seqnum full outer join
(select c.*, row_number() over (partition by a order by c) as seqnum
from c
) c
on c.a = coalesce(a.a, b.a) and c.seqnum = coalesce(a.seqnum, b.seqnum)
where coalesce(a.a, b.a, c.a) = 1;https://stackoverflow.com/questions/27292284
复制相似问题