關於db2中listagg函數開發中的體驗


一.首先解釋一下可能會查詢的基礎問題:

1.1db2 “with ur”是什么意思:

在DB2中,共有四種隔離級:RS,RR,CS,UR.以下對四種隔離級進行一些描述,同時附上個人做試驗的結果。隔離級是影響加鎖策略的重要環節,它直接影響加鎖的范圍及鎖的持續時間。兩個應用程序即使執行的相同的操作,也可能由於選擇的隔離級的不同而造成加鎖的結果不同。

1.2查看連接db2數據庫的版本:

命令查看: 用db2level 查看

1.3在db2中會有''字符串和null的區分

1.4聲明一下這個開發時基於https://www.csdn.net/gather_2d/MtTaAg5sODY1My1ibG9n.html這個網頁里的數據的

WITH
emp(deptno,job,telephone) AS(
SELECT * FROM (
VALUES (10,'persident','apple'),(30,'manager','orange'),(10,'persident','orange'),(20,'anayst','apple'),(30,'clerk','apple'),(20,'manager','orange')
,(20,'clerk','apple'),(10,'manager',null),(30,'sakesman','apple'),(10,'manager',''))
)
,fld(deptno,job,telephone) AS (
SELECT
deptno,
decode(row_number() over(PARTITION BY deptno,job),1,job) job,
decode(row_number() over(PARTITION BY deptno,telephone),1,telephone) telephone
FROM emp
)
SELECT
deptno,
listagg(job,',') within GROUP (ORDER BY job DESC ) jobs,
listagg(telephone,',') within GROUP (ORDER BY telephone) telephones
FROM fld
GROUP BY dep

整個過程我們可以看到''字符串是作為一個字符來傳遞的,而null值則是被過濾掉了。由於db2服務器版本過低,所以不能使用distinct進行拼接的過濾,只能使用11版本以前的函數進行開發測試,后續繼續補充

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM