最近有接觸到Oracle UNPIVOT,PIVOT,WMSYS.WM_CONCAT,以免忘記,整理如下:
創新互聯公司自2013年起,是專業互聯網技術服務公司,擁有項目成都網站制作、成都做網站、外貿營銷網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元石城做網站,已為上家服務,為石城各地企業和個人服務,聯系電話:18982081108
--------------------------------------
UNPIVOT的用法:
原始資料如下圖:
現在要將資料轉換成如下格式:
將資料按照INQTY,OUTQTY,REMAININGQTY三個欄位進行列轉行的處理.實現上面的轉換,使用的函數是UNPIVOT,具體實現代碼如下:
SELECT WEEKLY, ML, CVE, ITEMS, ITEM, QUANTITY
FROM TESTP UNPIVOT(QUANTITY FOR ITEM IN(INQTY, OUTQTY, remainingqty))
WHERE ID = '1';
-----------------------------------------------
PIVOT的用法:
如果原始資料是如下圖這樣:
希望資料按照如下圖片顯示:
首先將資料根據INQTY,OUTQTY,REMAININGQTY三個欄位進行列轉行的處理,然后再根據Weekly欄位做行轉列的處理.具體實現代碼如下:
SELECT *
FROM (SELECT WEEKLY, ML, CVE, ITEMS, ITEM, QUANTITY
FROM TESTP UNPIVOT(QUANTITY FOR ITEM IN(INQTY,OUTQTY,remainingqty))
WHERE ID = '1') PIVOT(SUM(QUANTITY) FOR WEEKLY IN('W150826','W150827'))
ORDER BY ML, CVE, ITEMS;
需要注意的是,PIVOT函數中的紅色字體部分只能是聚合函數,綠色字體部分不能是動態的字串[就是不能直接填寫一個欄位放在該處].
--------------------------------------------
WMSYS.WM_CONCAT的用法:
原始資料如下圖:
希望資料按ID,WEEKLY,ML,CVE group by 匯總,多個items以逗號分隔,顯示在一個單元格里面:
具體實現代碼如下:
SELECT ID, weekly, ml, cve, to_char(WMSYS.WM_CONCAT(items))
FROM TESTP
WHERE ID = '1'
GROUP BY ID, weekly, ml, cve
ORDER BY weekly;
網頁題目:初學OracleUNPIVOT,PIVOT,WMSYS.WM_CONCAT三個函數
分享路徑:http://vcdvsql.cn/article18/gjejdp.html
成都網站建設公司_創新互聯,為您提供App開發、品牌網站建設、網站導航、ChatGPT、定制網站、虛擬主機
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯