背景:最近在開發專案時,涉及到基礎指標的調整,相關復合指標及下游依賴指標**均需要全部重跑的問題。
案例:現在有乙個水果表,記錄了4個季度的銷售數量,現在要將每種水果的每個季度的銷售情況用多行資料展示。
建立表和資料
進行行轉列處理
於是,就只能換另外一種方法來處理:參照下圖,注意這裡values(1,2,3),(4,5,6)為行值,各行對應列中的值 字元型別必須一致,否則會報錯,
理解上圖中的方法後,我們再回過頭去將水果銷售表由行轉化為列
我們再回到背景提出的問題,etl.job_seq為依賴配置表,job_nm為任務名,pre_job為前置任務名,實際開發中有上百個任務,若其中乙個任務指令碼發生調整則依賴此任務的指令碼均需重跑,故現在要把依賴此任務的指令碼全部找出來並展示到1列下,插入以下案例的實驗資料。
從這裡可以看出:a1的下游依賴為a2, a2的下游依賴為a3,a3的下游依賴為a4和b3,我們將查詢出的層級依賴全部展示到1列下
select distinct t.job_nm
from
(select nvl(t0.job_nm,'none') as job_nm0
,nvl(t1.job_nm,'none')as job_nm1
,nvl(t2.job_nm,'none')as job_nm2
,nvl(t3.job_nm,'none')as job_nm3
from etl.job_seq t0 --第0層依賴(基礎指標)
left join etl.job_seq t1 --第1層依賴(復合指標)
on t0.job_nm=t1.pre_job
left join etl.job_seq t2 --第2層依賴(復合指標)
on t1.job_nm=t2.pre_job
left join etl.job_seq t3 --第3層依賴 (復合指標)
這便是我們需要達到的目的,當傳入調整的指標**,即可全部找到下游指標碼,並對這些指標進行批量重跑。
update etl.job_seq set job_sts='waiting' where job_nm in (exec_sql);
這個大家在平常的用法當中比較常見,用decode函式即可處理,這裡就不做具體說明了。
參考文件:1.
2.
DB2行列轉換
在db2資料庫中常用函式講db2行列轉換 select column1,replace replace xml2clob xmlagg xmlelement name a,column2 as name1 form tablename where 1 0 group by column1 將不需要行...
db2修改列型別
alter table salary data alter column salary setdata type decimal 6,2 alter table department addrating char 1 如果修改後出現db2 sql error sqlcode 668時,這個錯誤是表處...
DB2行轉列(多維度)
多維度下進行行列轉換,下面的行列轉換時根據客戶,所屬銀行機構進行的行列轉換。建表 create table cust bank info cust id varchar 10 cust name varchar 100 bank no varchar 100 bank varchar 100 mon...