以$开头的对象名称迁移
本章节介绍如何迁移以$(美元符号)开头的对象名称。
下表具体描述了这些对象名称的迁移行为。这些行为可以通过tdMigrateDollar参数来设置。
详情请参见IN/NOT IN转换。
tdMigrateDollar设置 |
对象名称 |
迁移为 |
---|---|---|
true |
$V_SQL 静态对象名称 |
"$V_SQL" |
true |
${V_SQL} 动态对象名称 |
${V_SQL} 无变化:不支持动态对象名称 |
false |
$V_SQL 静态对象名称 |
$V_SQL 无变化:参数设为false |
false |
${V_SQL} 动态对象名称 |
${V_SQL} 无变化:参数设为false |
任何以$开头的变量都被视为值。工具将通过添加ARRAY来进行迁移。
1
|
SELECT $C1 from p11 where $C1 NOT LIKE ANY ($sql1); |
输出:(tdMigrateDollar = TRUE)
1 2 3 4 5 6 7 8 9 |
SELECT "$C1" FROM p11 WHERE "$C1" NOT LIKE ANY ( ARRAY[ "$sql1" ] ) ; |
输出:(tdMigrateDollar = FALSE)
1 2 3 4 5 6 7 8 9 |
SELECT $C1 FROM p11 WHERE $C1 NOT LIKE ANY ( ARRAY[ $sql1 ] ) ; |
1 2 3 4 5 6 7 8 9 10 11 |
SELECT * FROM T1 WHERE T1.Event_Dt>=ADD_MONTHS(CAST('${OUT_DATE}' AS DATE FORMAT 'YYYYMMDD')+1,(-1)*CAST(T7.Tm_Range_Month AS INTEGER)) AND T1.Event_Dt<=CAST('${OUT_DATE}' AS DATE FORMAT 'YYYYMMDD') AND T1.Cntpty_Acct_Name NOT LIKE ALL ( SELECT Tx_Cntpty_Name_Key FROM TEMP_NAME ) AND T1.Cntpty_Acct_Name NOT LIKE ANY ( SELECT Tx_Cntpty_Name_Key FROM TEMP_NAME ) AND T1.Cntpty_Acct_Name LIKE ALL ( SELECT Tx_Cntpty_Name_Key FROM TEMP_NAME ) AND T1.Cntpty_Acct_Name LIKE ANY ( SELECT Tx_Cntpty_Name_Key FROM TEMP_NAME ) AND T1.Col1 NOT LIKE ANY ($sql1) AND T1.Col1 NOT LIKE ALL ($sql1) AND T1.Col1 LIKE ANY ($sql1) AND T1.Col1 LIKE ALL ($sql1); |
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
SELECT * FROM T1 WHERE T1.Event_Dt >= ADD_MONTHS (CAST( '${OUT_DATE}' AS DATE ) + 1 ,(- 1 ) * CAST( T7.Tm_Range_Month AS INTEGER )) AND T1.Event_Dt <= CAST( '${OUT_DATE}' AS DATE ) AND T1.Cntpty_Acct_Name NOT LIKE ALL ( SELECT Tx_Cntpty_Name_Key FROM TEMP_NAME ) AND T1.Cntpty_Acct_Name NOT LIKE ANY ( SELECT Tx_Cntpty_Name_Key FROM TEMP_NAME ) AND T1.Cntpty_Acct_Name LIKE ALL ( SELECT Tx_Cntpty_Name_Key FROM TEMP_NAME ) AND T1.Cntpty_Acct_Name LIKE ANY ( SELECT Tx_Cntpty_Name_Key FROM TEMP_NAME ) AND T1.Col1 NOT LIKE ANY ( ARRAY[ "$sql1" ] ) AND T1.Col1 NOT LIKE ALL ( ARRAY[ "$sql1" ] ) AND T1.Col1 LIKE ANY ( ARRAY[ "$sql1" ] ) AND T1.Col1 LIKE ALL ( ARRAY[ "$sql1" ] ) ; |
QUALIFY、CASE和ORDER BY
输入:
select a.Cust_UID as Cust_UID /* UID */ ,a.Rtl_Usr_Id as Ini_CM /* */ ,a.Cntr_Aprv_Dt as Aprv_Pass_Tm /* */ ,a.Blg_Org_Id as CM_BRN_Nbr /* */ ,a.Mng_Chg_Typ_Cd as MNG_CHG_TYP_CD /* */ ,case when a.Blg_Org_Id = b.BRN_Org_Id and a.Mng_Chg_Typ_Cd= 'PMD' and a.Pst_Id in ('PB0101','PB0104') then 'Y' ---- , when a.Blg_Org_Id = b.BRN_Org_Id and a.Mng_Chg_Typ_Cd= 'DEVPMD' and a.Pst_Id ='PB0106' then 'Y' ---- when a.Blg_Org_Id = b.BRN_Org_Id and a.Mng_Chg_Typ_Cd= 'DMD' and a.Pst_Id in ('PB0201','PB0204') then 'Y' ---- , when a.Blg_Org_Id = b.BRN_Org_Id and a.Mng_Chg_Typ_Cd= 'DEVDMD' and a.Pst_Id ='PB0109' then 'Y' ---- , else '' end as Pst_Flg /* */ ,a.Pst_Id as Pst_Id /* */ ,a.BBK_Org_Id as BBK_Org_Id /* */ from VT_CUID_MND_NMN_CHG_INF as a /* VT_ */ LEFT OUTER JOIN ${BRTL_VCOR}.BRTL_EM_USR_PST_REL_INF_S as b /* EM_ */ on a.Rtl_Usr_Id = b.Rtl_Usr_Id AND a.Blg_Org_Id = b.BRN_Org_Id AND a.Pst_Id = b.Pst_Id AND b.Sys_Id = 'privatebanking' AND b.pst_sts IN ('1','0','-2') /* 1 -2 0 */ AND b.DW_Snsh_Dt = cast('${v_Trx_Dt}' as date format 'yyyy-mm-dd') qualify row_number() over(partition by a.Cust_UID,a.bbk_org_id order by case when ( a.Mng_Chg_Typ_Cd= 'PMD' and a.Pst_Id in ('PB0101','PB0104')) or ( a.Mng_Chg_Typ_Cd= 'DEVPMD' and a.Pst_Id ='PB0106') then 0 when (a.Mng_Chg_Typ_Cd= 'DMD' and a.Pst_Id in ('PB0201','PB0204')) or (a.Mng_Chg_Typ_Cd= 'DEVDMD' and a.Pst_Id ='PB0109 ') then 0 else 1 end asc ) = 1 ;
输出:
SELECT Cust_UID AS Cust_UID /* UID */ ,Ini_CM /* */ ,Aprv_Pass_Tm /* */ ,CM_BRN_Nbr /* */ ,MNG_CHG_TYP_CD /* */ ,Pst_Flg /* */ ,Pst_Id AS Pst_Id /* */ ,BBK_Org_Id AS BBK_Org_Id /* */ FROM ( SELECT a.Cust_UID AS Cust_UID /* UID */ ,a.Rtl_Usr_Id AS Ini_CM /* */ ,a.Cntr_Aprv_Dt AS Aprv_Pass_Tm /* */ ,a.Blg_Org_Id AS CM_BRN_Nbr /* */ ,a.Mng_Chg_Typ_Cd AS MNG_CHG_TYP_CD /* */ ,CASE WHEN a.Blg_Org_Id = b.BRN_Org_Id AND a.Mng_Chg_Typ_Cd = 'PMD' AND a.Pst_Id IN ( 'PB0101' ,'PB0104' ) THEN 'Y' /* , */ WHEN a.Blg_Org_Id = b.BRN_Org_Id AND a.Mng_Chg_Typ_Cd = 'DEVPMD' AND a.Pst_Id = 'PB0106' THEN 'Y' /* */ WHEN a.Blg_Org_Id = b.BRN_Org_Id AND a.Mng_Chg_Typ_Cd = 'DMD' AND a.Pst_Id IN ( 'PB0201' ,'PB0204' ) THEN 'Y' /* , */ WHEN a.Blg_Org_Id = b.BRN_Org_Id AND a.Mng_Chg_Typ_Cd = 'DEVDMD' AND a.Pst_Id = 'PB0109' THEN 'Y' /* , */ ELSE '' END AS Pst_Flg /* */ ,a.Pst_Id AS Pst_Id /* */ ,a.BBK_Org_Id AS BBK_Org_Id /* */ ,row_number( ) over( partition BY a.Cust_UID ,a.bbk_org_id ORDER BY CASE WHEN( a.Mng_Chg_Typ_Cd = 'PMD' AND Q1.Pst_Id IN ( 'PB0101' ,'PB0104' ) ) OR( Q1.Mng_Chg_Typ_Cd = 'DEVPMD' AND a.Pst_Id = 'PB0106' ) THEN 0 WHEN( a.Mng_Chg_Typ_Cd = 'DMD' AND Q1.Pst_Id IN ( 'PB0201' ,'PB0204' ) ) OR( Q1.Mng_Chg_Typ_Cd = 'DEVDMD' AND a.Pst_Id = 'PB0109 ' ) THEN 0 ELSE 1 END ASC ) AS ROW_NUM1 FROM VT_CUID_MND_NMN_CHG_INF AS a /* VT_ */ LEFT OUTER JOIN BRTL_VCOR.BRTL_EM_USR_PST_REL_INF_S AS b /* EM_ */ ON a.Rtl_Usr_Id = b.Rtl_Usr_Id AND a.Blg_Org_Id = b.BRN_Org_Id AND a.Pst_Id = b.Pst_Id AND b.Sys_Id = 'privatebanking' AND b.pst_sts IN ( '1' ,'0' ,'-2' ) /* 1 -2 0 */ AND b.DW_Snsh_Dt = CAST( lv_mig_v_Trx_Dt AS DATE ) ) Q1 WHERE Q1.ROW_NUM1 = 1 ;