计数和聚合列表连接表

时间:2017-06-15 13:03:10

标签: sql oracle join count aggregate

我需要一些sql帮助,数据如下所示。

table A (a1, a2, a3)
table B (b1, b2)

A.a1和B.b1互相引用。我想要的是,对于唯一的B.b1,我想得到A.a2,它可以通过引用A.a1来获得多个记录。 例如,

A
v1, v2, v3
v1, v4, v5
v1, v3, v6
v2, v7, v8

B
v1, v9
v2, v10
v1, v11

我想得到如下结果,包括count和聚合字符串。

v1, 3, (v2,v4,v3)
v2, 1, (v7)

我认为这并不复杂,对我来说似乎需要一些时间:) 如果有人熟悉这一点,请提供一些建议。

1 个答案:

答案 0 :(得分:1)

试试这个:

select data.a1,
count(data.a1) as count,
LISTAGG(data.a2,',') WITHIN GROUP(order by data.a2 desc) as third_column from
(select A.a1,A.a2 from A where A.a1 in (select DISTINCT B.b1 from B )) data
 group by data.a1;