本文介紹了UNPIVOT 在多列上返回多列的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
限時(shí)送ChatGPT賬號(hào)..
以下是PL/SQL中要實(shí)現(xiàn)的要求-
Below is the requirement to be acheived in PL/SQL-
表格格式為
CREATE TABLE NETWORK_TABLE ( ORIG_CODE NUMBER, ORIG_SV NUMBER, DEST_CODE NUMBER, DEST_SV NUMBER )
樣本數(shù)據(jù) -
INSERT INTO network_table VALUES ( 14, 1, 15, 1);
INSERT INTO network_table VALUES ( 18, 4, 11, 1);
INSERT INTO network_table VALUES ( 15, 1, 22, 3);
INSERT INTO network_table VALUES ( 23, 2, 21, 1);
INSERT INTO network_table VALUES ( 14, 3, 11, 1);
INSERT INTO network_table VALUES ( 12, 2, 22, 2);
表格數(shù)據(jù)看起來像 -
Table data looks like -
Orig_r orig_sv dest_r dest_sv
14 1 15 1
12 2 22 2
18 4 11 1
15 1 22 3
14 3 11 1
現(xiàn)在,我想得到如下輸出 -
Now, I want to get the output as below -
ROOT SV
14 1
15 1
12 2
22 2
18 4
11 1
15 1
22 3
14 3
1 1
我怎樣才能做到這一點(diǎn)?感謝您的意見
How can I acheive this? Appreciate your input
推薦答案
像這樣:
SQL> select * from network_table;
ORIG_CODE ORIG_SV DEST_CODE DEST_SV
---------- ---------- ---------- ----------
14 1 15 1
12 2 22 2
18 4 11 1
15 1 22 3
14 3 11 1
SQL> select case name when 'ORIG_SV' then orig_code else dest_code end code, val
2 from network_table
3 unpivot (val for name in (orig_sv, dest_sv));
CODE VAL
---------- ----------
14 1
15 1
12 2
22 2
18 4
11 1
15 1
22 3
14 3
11 1
或 10g 及以下:
SQL> select case r when 1 then orig_code else dest_code end code,
2 case r when 1 then orig_sv else dest_sv end val
3 from network_table, (select rownum r from dual connect by level <= 2)
4 /
CODE VAL
---------- ----------
14 1
12 2
18 4
15 1
14 3
15 1
22 2
11 1
22 3
11 1
這篇關(guān)于UNPIVOT 在多列上返回多列的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!
【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!