Quantcast
Channel: dBforums – Everything on Databases, Design, Developers and Administrators
Viewing all articles
Browse latest Browse all 13329

better way rewrite this Update statement?

$
0
0
There are million records that match following 3 updates. I was wondering if there is a better way to re-write the following 3?

----------------------------------
-----Update statement # 1
----------------------------------

MERGE INTO SCHEMA.Table T
USING (SELECT
S1.CUSTNO
,S1.SURR_KEY
FROM SCHEMA.SOURCE1 S1
INNER JOIN
SCHEMA.SOURCE2 S2
ON S2.SURR_KEY_2 = S1.SURR_KEY_2
WHERE S2.AREA_CD = 967
AND S1.STATUS = 'ACTIVE'
) s
ON (T.CUST_NO = s.CUST_NO)
AND T.LOCATION IN ('NA','EUR','ASIA')

WHEN MATCHED THEN
UPDATE SET
T.C1 = S1.SURR_KEY

WITH UR;

----------------------------------
-----Update statement # 2
----------------------------------

MERGE INTO SCHEMA.Table T
USING (SELECT
S1.CUSTNO
,S1.SURR_KEY
FROM SCHEMA.SOURCE1 S1
INNER JOIN
SCHEMA.SOURCE2 S2
ON S2.SURR_KEY_2 = S1.SURR_KEY_2
WHERE S2.AREA_CD = 967
AND S1.LAST_LOGIN_LOCTN = 'NEW YORK' -- Difference is here from above select query
) s
ON (T.CUST_NO = s.CUST_NO)
AND T.LOCATION IN ('NA','EUR','ASIA')

WHEN MATCHED THEN
UPDATE SET
T.C2 = S1.SURR_KEY --target table is same but different target column is updated here with same source Key becasue source key may have different value

WITH UR;

--------------------------------
-----Update statement # 3
-- Before Update#1 all T.C1, T.C2 are 0. LAST Update statement to set all the remaining values that did not match in #1 and #2 to 9999.
----------------------------------



UPDATE SCHEMA.Table T
SET T.C1 = 9999
,T.C2 = 9999
WHERE
T.C1 = 0
AND T.C2 = 0 ;

Viewing all articles
Browse latest Browse all 13329

Trending Articles