第一个表是这样的:table_1
00112.0001 12.0002 10.0103 8.0101 8.0203 11.0
您的查询只显示了一半的任务:您只查看table_1
。对于GROUP BY group_number
,您告诉DBMS仅为每个group_number
选择一行。这对那张桌子很合适。但是您不能SELECT *
,因为每个group_number
都有几行。如何是DBMS应该知道哪一行的值显示然后为group_number
?
从该查询中删除*
以使其有效。选择group_number
代替。然后将此结果加入table_2
。
select *
from table_2 t2
left outer join
(
select
group_number,
listagg(rate, ',') within group (order by c_id) as rates
from table_1
group by group_number
) t1 on t1.group_number = t2.group_number
order by t2.group_number, t2.date;