DB2兩個遞迴集合合併

2021-07-31 11:28:10 字數 2057 閱讀 5439

一般用with可以連線兩個集合,但是遞迴有所不同,通常我們會改寫成如下的錯誤**:

with

report(id,org_name,org_level,parent_org,description)

as (select id,org_name,org_level,parent_org,description from ad_orgtb where id = '111111'

union all select b.id,b.org_name,b.org_level,b.parent_org,b.description from report a,ad_orgtb b where b.id = a.parent_org

) , reportone(id,org_name,org_level,parent_org,description)

as (select id,org_name,org_level,parent_org,description from ad_orgtb where id = '111111'

union all select bb.id,bb.org_name,bb.org_level,bb.parent_org,bb.description from reportone aa,ad_orgtb bb where bb.parent_org = aa.id

) select distinct id,org_name,org_level,parent_org,description from report,reportone

正確的寫法應該如下:

with report(id,org_name,org_level,parent_org,description)

as (select id,org_name,org_level,parent_org,description from ad_orgtb where id = '22222'

union

allselect b.id,b.org_name,b.org_level,b.parent_org,b.description from report a,ad_orgtb b where b.id = a.parent_org)

,report_result(id,org_name,org_level,parent_org,description)

as (

select

distinct id,org_name,org_level,parent_org,description from report order

by org_level,id

),reportone(id,org_name,org_level,parent_org,description)

as (

select id,org_name,org_level,parent_org,description from ad_orgtb where id = '222222'

union

allselect b.id,b.org_name,b.org_level,b.parent_org,b.description from reportone a,ad_orgtb b where b.parent_org = a.id

) ,reportone_result(id,org_name,org_level,parent_org,description) as (

select

distinct id,org_name,org_level,parent_org,description from reportone order

by org_level,id

)select

distinct * from (

select id,org_name,org_level,parent_org,description

from report_result

union

allselect id,org_name,org_level,parent_org,description

from reportone)t

要先將結果集取了,才能放置多個遞迴。

兩個List資料集合合併成乙個List

開發工具與關鍵技術 visual studio 與c 查詢兩個差不多相同的表,乙個是入庫表,乙個是退貨表,字段大致相同,但是有所差異,入庫表的數量和所有金額都是正數,退貨表的數量和金額都是負數,所以不能join鍊錶查詢,需要分開查詢出兩個tolist 但是return只能有乙個,不能return兩次...

C 合併兩個(多個)集合

合併兩個集合 使用語言 c 環境 net core 2.0 當前使用 支援 net 所有環境,我就不多說了 核心 listlistmerge1 list1.union list2 tolist 不允許有重複項 listmerge1 結果 listlistmerge2 list1.concat lis...

db2實現兩個數相減 DB2 日期相減 學步園

這篇短文是為那些剛接觸db2並想理解如何操作日期和時間的新手而寫的。使用過其它資料庫的大部分人都會很驚喜地發現在db2中操作日期和時間是多麼簡單。要使用 sql 獲得當前的日期 時間及時間戳記,請參考適當的db2暫存器 select current date from sysibm.sysdummy...