现在我想要表A中Name的记录,表B中有不同的值。
例如
* A will have records A1,A1,C1,D1
* B will have records B1,B1,B1,B1
* C will have records C1,C1
* D will have records D1,E1
* E will have only one record E1
我需要输出
A A1,A1,C1,D1
D D1,E1
我使用了ListAgg
函数,但它给了我所有记录。
任何人都可以告诉我如何获取记录
答案 0 :(得分:1)
listagg()
的唯一值。您只想过滤掉所有值相同的结果行:
select a.name, listagg(b.value, ',') within group (order by a.id2) as val_str
from a join
b
on a.id2 = b.id2
group by a.name
having min(b.value) <> max(b.value);
答案 1 :(得分:-1)
您可以使用联接来加入id2字段上的两个表。 然后你可以在&#39; Name&#39;上使用select by子句的select查询。表和group_concat(在oracle中是list agg)函数用于从B表中选择值的连接字符串。 ....如果您使用的是mysql查询。