UNPIVOT on multiple columns to return multiple columns(UNPIVOT 在多列上返回多列)
本文介绍了UNPIVOT 在多列上返回多列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下是PL/SQL中要实现的要求-
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 )
样本数据 -
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);
表格数据看起来像 -
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
现在,我想得到如下输出 -
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
我怎样才能做到这一点?感谢您的意见
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
这篇关于UNPIVOT 在多列上返回多列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:UNPIVOT 在多列上返回多列
基础教程推荐
猜你喜欢
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- 带更新的 sqlite CTE 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
