如何将表中的单个记录与表2中的多个记录连接起来

时间:2016-12-07 22:04:18

标签: sql oracle

我有2张桌子

表1

CUST    Track
1        100
2        100
3        200
4        200

表2

Track   Data 
100       A
100       B
100       C
100       D
200       X
200       Y
200       Z
200       P

输出

CUST       Track    Data 
1           100      A
                     B
                     C
                     D
2           100      A
                     B
                     C
                     D
3          200       X
                     Y
                     Z
                     P
3          200       X
                     Y
                     Z
                     P

我想要CUST,在输出和数据中只跟踪一次我希望所有记录按照上面的输出。

1 个答案:

答案 0 :(得分:0)

我建议你将所有数据放在一行中,如下所示:

CUST       Track    Data 
1           100      A,B,C,D

这很容易制作:

select t1.custid, t2.track, listagg(data, ',') within group (order by data) as data
from table1 t1 join
     table2 t2
     on t1.track = t2.track
group by t1.custid, t2.track;

此格式不是必需的。可以生成所需的输出。但是,在SQL上下文中,该输出相当奇怪,因为它具有行间依赖性。通常,SQL表或结果集中的行表示某些内容,而不引用"相邻的"行。