依據前後資料關聯關係,生成多行資料
例:一張表的資料如下,第一個欄位是日期,第二個欄位是數字
ROW DATE NUMBER
1 2014-02-01 4
2 2014-02-08 3
3 2014-02-15 4
4 2014-02-22 9
現在需要寫一個查詢,顯示出的結果是7號以前的的值是4,8號到14號的值是3,15號到21號的值是4,21號到當前日期的值是9。
方法1:
分析:要生成的資料,日期非常有規律,以一個星期為界限,可以構造一個序列,0-6,然後已有日期+序列,作為新生成的日期,
完整sql程式碼如下:
SQL> edit
已寫入 file afiedt.buf
1 with t1 as(
2 select date'2014-02-01' dt,4 num from dual union all
3 select date'2014-02-08',3 from dual union all
4 select date'2014-02-15',4 from dual union all
5 select date'2014-02-22',9 from dual),
6 t2 as(select level-1 l from dual connect by
7 level<=7)
8* select t1.dt+l,num from t1,t2 order by 1
9 /
T1.DT+L NUM
-------------- ----------
01-2月 -14 4
02-2月 -14 4
03-2月 -14 4
04-2月 -14 4
05-2月 -14 4
06-2月 -14 4
07-2月 -14 4
08-2月 -14 3
09-2月 -14 3
10-2月 -14 3
11-2月 -14 3
T1.DT+L NUM
-------------- ----------
12-2月 -14 3
13-2月 -14 3
14-2月 -14 3
15-2月 -14 4
16-2月 -14 4
17-2月 -14 4
18-2月 -14 4
19-2月 -14 4
20-2月 -14 4
21-2月 -14 4
22-2月 -14 9
T1.DT+L NUM
-------------- ----------
23-2月 -14 9
24-2月 -14 9
25-2月 -14 9
26-2月 -14 9
27-2月 -14 9
28-2月 -14 9
已選擇28行。
方法2:
先構造一個日期表,然後與此表left join,再利用last_value( ignore nulls)生成num欄位資料,完整程式碼如下:
SQL> edit
已寫入 file afiedt.buf
1 with t1 as
2 (select date '2014-02-01' dt, 4 num
3 from dual
4 union all
5 select date '2014-02-08', 3
6 from dual
7 union all
8 select date '2014-02-15', 4
9 from dual
10 union all
11 select date '2014-02-22', 9 from dual),
12 t2 as
13 (select date '2014-02-01' + level - 1 dt
14 from dual
15 connect by level <=
16 TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE('201402', 'YYYYMM')), 'dd')))
17 select t2.dt, last_value(num ignore nulls) over(order by t2.dt) num
18 from t2
19 left join t1
20* on (t1.dt = t2.dt)
SQL> /
DT NUM
-------------- ----------
01-2月 -14 4
02-2月 -14 4
03-2月 -14 4
04-2月 -14 4
05-2月 -14 4
06-2月 -14 4
07-2月 -14 4
08-2月 -14 3
09-2月 -14 3
10-2月 -14 3
11-2月 -14 3
DT NUM
-------------- ----------
12-2月 -14 3
13-2月 -14 3
14-2月 -14 3
15-2月 -14 4
16-2月 -14 4
17-2月 -14 4
18-2月 -14 4
19-2月 -14 4
20-2月 -14 4
21-2月 -14 4
22-2月 -14 9
DT NUM
-------------- ----------
23-2月 -14 9
24-2月 -14 9
25-2月 -14 9
26-2月 -14 9
27-2月 -14 9
28-2月 -14 9
已選擇28行。
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21251711/viewspace-1102669/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分析資料庫的依賴關係(轉)資料庫
- 關聯關係與依賴關係的區別
- 關係型資料庫與非關係型資料庫介紹!資料庫
- NoSQL:從關係型資料庫到非關係型資料庫SQL資料庫
- 關係型資料庫資料庫
- 資料庫 - 關係演算資料庫
- 關係型資料庫,何以稱為“關係”資料庫
- 資料關係比較:相關性 vs 因果關係
- 關係型資料庫和非關係型資料庫的區別資料庫
- 資料庫多對多表關係資料資料庫
- 資料庫 - 關係代數與關係運算資料庫
- PostgreSQL關係型資料庫SQL資料庫
- 關係型資料庫概要資料庫
- oracle 資料字典關係圖Oracle
- 關係型資料庫原理資料庫
- OO資料庫和關係型資料庫資料庫
- SQLAIchemy資料模型關聯SQLAI模型
- Android開源資料庫 GreenDao 物件實體間關聯關係Android資料庫物件
- 關係型資料庫和非關係型資料庫的簡單對比資料庫
- 資料檔案大小和資料庫的關係資料庫
- 非關係型資料庫(NOSQL)和關係型資料庫(SQL)區別詳解資料庫SQL
- 設計資料庫關係模型資料庫模型
- 關係型資料庫之SQL資料庫SQL
- 關係型資料庫之索引資料庫索引
- 關係型資料庫的理解資料庫
- 關係型資料庫理論資料庫
- 非關係型資料庫:Cassandra資料庫
- redis—非關係型資料庫Redis資料庫
- 物件導向程式設計程式碼詳解(依賴關係,關聯關係,組合關係)物件程式設計
- 2- hive後設資料與hadoop的關係HiveHadoop
- 資料結構——關聯容器資料結構
- 資料庫關聯問題資料庫
- 例項,資料庫,資料字典與資料庫建立的關係資料庫
- 資料庫選型的依據資料庫
- NoSQL資料庫探討 -- 非關係型資料庫SQL資料庫
- 談談資料制度與資料標準的關係
- 資料結構之資料、資料元素、資料項、資料物件之間的關係資料結構物件
- 資料庫入門之3張表對比關係型與非關係型資料庫資料庫