wmsys.wm_concat是一個聚合函數,其作用是將一列數據轉換成一行,也就是我們常用的行專列,但是該函數是一個undocument函數,所以不推薦大家使用這個函數。因為在后續的版本中還提不提供這個函數都不好說呢。
首先創建臨時表和測試數據

使用該函數,可以看到我們的按id做group by,把name字段列轉置為一行

但是我們使用wmconcat還是會遇到這么兩個問題:1.vm_concat函數是無序的。2.遇到ora-22922的錯誤。
通過我們第二步可以看到name字段在列轉行后沒有按照順序排列的
這種情況我們可以使用窗口函數來解決無序的問題呢,如下圖所示
另一種情況是會遇到ora-22922的報錯,如下圖所示。這種情況一般發生在內層使用to_char這樣的函數,外層在去查詢這列就報錯。
解決方案是將to_char這類的函數放到最外面執行。
