Oracle的sys_connect_by_path函式
阿新 • • 發佈:2019-02-11
sys_connect_by_path函式
用於多列轉行
語法格式
select … sys_connect_by_path(column_name,’connect_symbol’) from table
start with … connect by … prior
語法說明
column_name,欄位名
connect_symbol,兩個欄位之間的連線符號
start with,開始的地方,遍歷的起點
connect by,來尋找下一條記錄,直到迭代找不到相應記錄為止
指定遞迴(連線)條件,如果條件不滿足則遞迴結束
prior,參考值,寫在誰的前面誰就作為父級值(參照值)
SELECT
c1 AS ASSAY_EQUIPMENT_ID,
LTRIM (
SYS_CONNECT_BY_PATH (c2, ','),
','
) ASSAY_ITEM_IDS,
LTRIM (
SYS_CONNECT_BY_PATH (c3, ','),
','
) ASSAY_ITEM_NAMES
FROM
(
SELECT
c1,
c2,
c3,
ROW_NUMBER () OVER (PARTITION BY c1 ORDER BY c2) rn
FROM
(
SELECT
R1.ASSAY_EQUIPMENT_ID c1,
R1.ASSAY_ITEM_ID c2,
T1.ASSAY_ITEM_NAME c3
FROM
CNF_ASSAY_ITEM_EQUI_RELA R1,
DIC_ASSAY_ITEM T1
WHERE
R1.ASSAY_ITEM_ID = T1. ID
)
)
WHERE
CONNECT_BY_ISLEAF = 1 CONNECT BY PRIOR rn + 1 = rn
AND PRIOR c1 = c1 START WITH rn = 1