您好,登錄后才能下訂單哦!
這篇文章主要講解了“在Oracle中的多個連接表上怎么使用LISTAGG()”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“在Oracle中的多個連接表上怎么使用LISTAGG()”吧!
你可能知道如何在單個表上使用 LISTAGG(),但不知道如何在多個連接表上使用 LISTAGG。此示例演示如何在 Oracle 12g 中對連接的多個表使用聚合函數。
假設我們有以下兩個表。
“用戶”表
ID | 姓名 |
111 | aaa |
222 | bbb |
333 | bbb |
“記錄”表
ID | 標簽 | 價值 |
111 | start | 1 |
111 | mid | 2 |
111 | end | 3 |
222 | start | 1 |
222 | end | 2 |
333 | start | 1 |
333 | mid | 2 |
333 | start | 3 |
如果我們要選擇所有標有“start”和“end”的值,如下圖,sql查詢怎么寫?
預期結果:
ID | 姓名 | 聚合值 |
111 | aaa | 1,3 |
222 | bbb | 1,2 |
333 | bbb | 1,3 |
select u.ID, u.Name, listagg(Value, ', ') within group (order by Tag) as AggValues
from User u
left outer join Record r
on u.ID = r.ID and r.Tag in ('start', 'end')
group by u.ID, u.Name;
一個常見的錯誤是缺少最后一個 group by
子句中的字段。每個選擇字段也應該在 group by
子句中。在本例中,我們選擇 select
ID 和 Name,因此應該使用 ID 和 Name 對結果進行分組。
感謝各位的閱讀,以上就是“在Oracle中的多個連接表上怎么使用LISTAGG()”的內容了,經過本文的學習后,相信大家對在Oracle中的多個連接表上怎么使用LISTAGG()這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。