2017-03-04 66 views
0

我想在SQL中编写查询。谁能帮我写的Oracle SQL查询结果表下方结果表描述

Table 1 Data 
prodno description 
1 Laptop 
2 Charger 
3 Mouse 

Table 2 Data 
prodno prodset_no 
1 1 
2 1 
3 1 
1 2 
3 2 
1 3 
2 3 


Result Table 
prodset_no prodset_desc 
1  Laptop,Charger,Mouse 
2  Laptop,Mouse 
3  Laptop,Charger 

回答

2

JOIN两个表,然后用listagg生产逗号分隔的输出:

select t2.prodset_no, 
    listagg(t1.description, ',') within group (
     order by t1.prodno 
     ) prodset_desc 
from table2 t2 
join table1 t1 on t2.prodno = t1.prodno 
group by t2.prodset_no; 

此外,值得一记的是,listagg有4000字节的限制。如果达到该限制,则可以使用XMLAGG或重新考虑问题,而不是在SQL中执行它,而是在应用程序代码中处理它。

+0

非常感谢你的工作 – user2293819