使用dual 虛表,構造連續資料
模擬一個資料表如下
有三個欄位:年、月、數值。但資料不是連續的。如2014年05月 到2015年04月 缺少 2014年06、08、11、12 以及2015年01、02
如果要求結果中不能有月份缺少怎麼辦? 起始年月與終止年月為引數。
下面給出一解決方案,主要是使用dual 表及connect by level 進行生成全月份的一個檢視,然後與資料表進行左外連線得到月份連續的結果。
有三個欄位:年、月、數值。但資料不是連續的。如2014年05月 到2015年04月 缺少 2014年06、08、11、12 以及2015年01、02
點選(此處)摺疊或開啟
-
select '2014' year ,'05' month ,100 val from dual union all
-
select '2014' year ,'07' month ,100 val from dual union all
- select '2014' year ,'09' month ,100 val from dual union all
-
select '2014' year ,'10' month ,100 val from dual union all
-
select '2015' year ,'03' month ,100 val from dual union all
- select '2015' year ,'04' month ,100 val from dual
下面給出一解決方案,主要是使用dual 表及connect by level 進行生成全月份的一個檢視,然後與資料表進行左外連線得到月份連續的結果。
點選(此處)摺疊或開啟
-
with v_date as (
-
select '2014' year ,'05' month ,100 val from dual union all
-
select '2014' year ,'07' month ,100 val from dual union all
-
select '2014' year ,'09' month ,100 val from dual union all
-
select '2014' year ,'10' month ,100 val from dual union all
-
select '2015' year ,'03' month ,100 val from dual union all
-
select '2015' year ,'04' month ,100 val from dual
-
), DATELIST as (
-
select to_char(add_months( to_date('201405','yyyymm') ,level-1 ),'yyyy' ) year,
-
to_char(add_months( to_date('201504','yyyymm') ,level-1 ),'mm' ) month
-
from dual connect by level <= months_between( to_date('201504','yyyymm'),to_date('201405','yyyymm'))+1
-
)
-
-
select t.year,t.month,t1.val from DATELIST t,v_date t1
-
where t.year = t1.year(+) and t.month = t1.month(+)
- order by t.year,t.month
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30066956/viewspace-1808318/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 探索oracle dual表Oracle
- oracle的dual表Oracle
- 【DUAL】資料庫nomount狀態下DUAL的內容資料庫
- 資料結構-線性表、連結串列資料結構
- Oracle dual表 詳解Oracle
- ORACLE DUAL表詳解Oracle
- 【資料結構】線性表-單連結串列資料結構
- 使用NLP和ML來提取和構造Web資料Web
- 複雜SQL構造資料:SQL
- MySQL構造測試資料MySql
- Day76.雜湊表、雜湊函式的構造 -資料結構函式資料結構
- 資料庫不能直連怎麼造資料呢資料庫
- 樹形資料構造的方法
- rhel5 mysqldump使用_匯出表結構_資料_結構及資料MySql
- 個人使用向5:連續時間表的應用
- oracle資料庫連續相同資料的統計方法Oracle資料庫
- 根據一個輸入資料構造二叉樹和連結串列資料結構的方法(c++)二叉樹資料結構C++
- scapy構造列印ARP資料包
- db2 構造測試資料DB2
- 資料結構與演算法 | 線性表 —— 連結串列資料結構演算法
- Power Designer 連線SqlServer 資料庫 匯出表結構SQLServer資料庫
- Mysql資料庫表連線MySql資料庫
- 從資料庫角度談業務連續性資料庫
- Oracle中dual表的用途介紹Oracle
- C++中的虛繼承的構造C++繼承
- oracle block資料塊結構續(一)OracleBloC
- 第八章:不要在構造和解構函式中使用虛擬函式函式
- 資料結構-連結串列資料結構
- 資料結構 - 連結串列資料結構
- 連結串列-資料結構資料結構
- 資料結構--連結串列資料結構
- 資料結構—連結串列資料結構
- 資料結構與演算法-線性表-單連結串列資料結構演算法
- express入門04 資料庫連線 表結構建立 模型建立Express資料庫模型
- 【C++】構造資料型別--陣列C++資料型別陣列
- Mysql匯出表結構、表資料MySql
- c語言 構造素數表C語言
- 【資料庫】sql連表查詢資料庫SQL