【发布时间】:2019-06-30 16:04:38
【问题描述】:
我有一个多维/非关系的数据表。我正在尝试编写一个动态写出所有列名称并相关排列数据的查询。
该示例是一个显示 5 本书的简单表格。这些列显示了书中页面的大小。我正在寻找的结果集将有 3 列:BOOK_ID、PAGE、PAGE_SIZE。我已经包含了简单的代码来构建表格。
我已经设法通过使用联合查询来解决问题,但这对于大量列来说是不合理的。该数据集有近 100 列。
CREATE TABLE
BOOK_PAGE_SIZE
(
BOOK_ID VARCHAR2(5)
, SIZE_PAGE_1 NUMBER
, SIZE_PAGE_2 NUMBER
, SIZE_PAGE_3 NUMBER
, SIZE_PAGE_4 NUMBER
, SIZE_PAGE_5 NUMBER
);
INSERT INTO BOOK_PAGE_SIZE VALUES ('T7001',10,35,0,0,0);
INSERT INTO BOOK_PAGE_SIZE VALUES ('T7002',45,84,78,0,0);
INSERT INTO BOOK_PAGE_SIZE VALUES ('T7003',28,65,12,32,0);
INSERT INTO BOOK_PAGE_SIZE VALUES ('T7004',94,74,69,21,76);
INSERT INTO BOOK_PAGE_SIZE VALUES ('T7005',91,23,14,61,46);
结果集:
BOOK_ID PAGE_NUMBER PAGE_SIZE
T70001 Page 1 10
T70001 Page 2 35
T70001 Page 3 0
T70001 Page 4 0
T70001 Page 5 0
T70002 Page 1 45
T70002 Page 2 84
T70002 Page 3 78
T70002 Page 4 0
T70002 Page 5 0
T70003 Page 1 28
T70003 Page 2 65
T70003 Page 3 12
T70003 Page 4 32
T70003 Page 5 0
T70004 Page 1 94
T70004 Page 2 74
T70004 Page 3 69
T70004 Page 4 21
T70004 Page 5 76
T70005 Page 1 91
T70005 Page 2 23
T70005 Page 3 14
T70005 Page 4 61
T70005 Page 5 46
【问题讨论】: