甲骨文設置:
簡化您的表 - 不要存放32列(本月31日),而不是僅僅店月,日和價值PIVOT
爲所需的輸出:
CREATE TABLE table1 (
month NUMBER(2,0),
day NUMBER(2,0),
value VARCHAR2(4000)
);
INSERT INTO table1
SELECT EXTRACT(MONTH FROM date_column),
EXTRACT(DAY FROM date_column),
value
FROM table2;
查詢:
SELECT month, d1, d2, d3, d4, /* ..., */ d31
FROM table1
PIVOT (MAX(value) FOR day IN (
1 AS d1, 2 AS d2, 3 As d3, 4 AS d4, /* ..., */ 31 AS d31
));
更新:
DDL的表1: -
CREATE TABLE table1 (Month Number,1 Number,2 Number,...31 Number,);
您可以使用:
INSERT INTO table1
SELECT month, d1, d2, /* ..., */ d31
FROM (SELECT EXTRACT(MONTH FROM date_column) AS month,
EXTRACT(DAY FROM date_column) AS day,
value
FROM table2)
PIVOT (MAX(value) FOR day IN (
1 AS d1, 2 AS d2, /* ..., */ 31 AS d31
));
或者使用MERGE INTO
如果要更新現有的行。
來源
2017-06-21 12:59:14
MT0
一張表沒有固定的行數......你可以在每月的每一天有一列,在每月的每一天可以有31列,但說你有「一年中的月份從1到12排「沒有多大意義。請發佈[MCVE],包括您的表的DDL語句以及它們包含的數據的任何DML語句。 – MT0
它看起來像'to_char()'與適當的格式掩碼是你在找什麼。提示,編號月份的格式爲'mm',日期格式爲'dd'。 – Boneist
編輯您的問題並提供樣本數據和期望的結果。 –