Hallo mabro, kali ini gua pengen catet lagi ini pengetahuan yang baru gua dapetin. Intinya mah ini tu catatan buat gua si, biar gua gak lupa. Tapi mungkin catatan gua bisa bermafaat untuk yang lain, ya jadi gua share saja disini.
Okeh,,, karena sebelumnya gua lebih sering buat script SQL dan SQL Server sebagai databasenya. Nah sekarang gua lebih sering menggunakan Redshift untuk databasenya. Sehingga ada beberapa function script yang berbeda dengan SQL Server. Namun secara keseluruhan hampir sama cuma ada beda dibeberapa bagian saja.
Jadi saat ini gua mau share terkait logic untuk Delete table berdasarkan table yang lain untuk filternya. Nanti tulils dibawah yang jadi perbedaan nya. :
SQL Server
DELETE FROM EDW_FINANCESOD.T_SOD_CONFLICT SOD
INNER JOIN (
SELECT CREATED_BY_NAME, COMPANY_CODE, PERIOD_OF_BASELINE_DOCUMENT,COUNT(*) 'COUNT_BASELINE_DOCUMENT'
FROM (
SELECT DISTINCT CREATED_BY_NAME, COMPANY_CODE, PERIOD_OF_BASELINE_DOCUMENT,BASELINE_DOCUMENT
FROM EDW_FINANCESOD.T_SOD_CONFLICT WHERE SOD_RULE IN ('R040','R140','R150')
) X
GROUP BY CREATED_BY_NAME, COMPANY_CODE, PERIOD_OF_BASELINE_DOCUMENT
) DISTINCT_SOD ON SOD.CREATED_BY_NAME = DISTINCT_SOD.CREATED_BY_NAME
AND SOD.COMPANY_CODE = DISTINCT_SOD.COMPANY_CODE
AND SOD.PERIOD_OF_BASELINE_DOCUMENT = DISTINCT_SOD.PERIOD_OF_BASELINE_DOCUMENT
WHERE DISTINCT_SOD.COUNT_BASELINE_DOCUMENT > 1
Redshift :
DELETE T_SOD_CONFLICT_STAGING
FROM
(
SELECT CREATED_BY_NAME, COMPANY_CODE, PERIOD_OF_BASELINE_DOCUMENT,COUNT(*) AS COUNT_BASELINE_DOCUMENT
FROM (
SELECT DISTINCT CREATED_BY_NAME, COMPANY_CODE, PERIOD_OF_BASELINE_DOCUMENT,BASELINE_DOCUMENT FROM T_SOD_CONFLICT_STAGING WHERE SOD_RULE IN ('R040','R140','R150')
) X
GROUP BY CREATED_BY_NAME, COMPANY_CODE, PERIOD_OF_BASELINE_DOCUMENT
) DISTINCT_SOD
Where
(
T_SOD_CONFLICT_STAGING.CREATED_BY_NAME = DISTINCT_SOD.CREATED_BY_NAME
AND T_SOD_CONFLICT_STAGING.COMPANY_CODE = DISTINCT_SOD.COMPANY_CODE
AND T_SOD_CONFLICT_STAGING.PERIOD_OF_BASELINE_DOCUMENT = DISTINCT_SOD.PERIOD_OF_BASELINE_DOCUMENT
and DISTINCT_SOD.COUNT_BASELINE_DOCUMENT = 1
);
Nah,,, tu diatas bedanya.
Biar gak puyeng gua tandain warna merah di script nya.
1. Beda di cara delete nya
2. beda dicara join table utama dengan table lain nya
kalo masih bingung kabarin gua di komen ya ...
0 comments:
Post a Comment