我猜这是一个弄清楚要使用什么oracle命令的问题,但经过几个小时的谷歌搜索后,我找不到任何可以做我需要的东西。所以这就是我需要简单发生的事情:
Table 1 Table 2 | PrjID | | PrjID | UserID | |----------| |----------|----------| | Project1 | | Project1 | User1 | | Project2 | | Project1 | User2 | | Project3 | | Project1 | User3 | | Project4 | | Project2 | User2 | | Project5 | | Project3 | User5 |
我需要生成一个SQL查询,以便通过上面的两个表,我可以生成如下所示的结果:
| PrjID | UserIDs | |----------|-------------------| | Project1 | User1,User2,User3 | | Project2 | User2 | | Project3 | User5 |
我想要尝试的第一件事是连接语句,但是我相信很多人都知道,这会给每个项目有多行的结果。我还遇到了几个关于枢轴的教程,但这只是为了让你的结果转向它而不是实际聚合一行的字符串值。我对SQL的更高级部分还有点新意,所以我很可能只是在谷歌搜索错误的东西来弄清楚如何做到这一点。我可能会破解Java中的一个解决方案(这是一个webapp的一部分),它只是遍历行并拉出每个用户,但我真的想学习一种让SQL为我做这一部分的方法。
非常感谢任何提供的帮助!
答案 0 :(得分:2)
以下是使用collect_func()
的示例代码的说明答案 1 :(得分:0)
Read this page about String Concatenation in Oracle
假设可用,您可以使用wm_concat:
SELECT a.prjid,
wm_concat(b.userid) AS userids
FROM TABLE_1 a
JOIN TABLE_2 b ON b.prjid = a.prjid
GROUP BY a.prjid