Quick addition of another key element (SRC_ID)
😎
USE tempdb;
GO
;WITH BASE_DATE(BD_ID,SRC_ID,BD_FLAG) AS
( SELECT BD_ID,SRC_ID,BD_FLAG FROM (VALUES
(1 ,1,'ABC' )
,(2 ,1,'123' )
,(3 ,1,'DEF' )
,(4 ,2,'ABC' )
,(5 ,2,'123' )
,(6 ,2,'DEF' )
,(7 ,3,'ABC' )
,(8 ,3,'123' )
,(9 ,3,'DEF' )
,(10,4,'ABC' )
,(11,4,'123' )
,(12,4,'DEF' )
) AS X(BD_ID,SRC_ID,BD_FLAG)
)
,TRANSLATE_SET(SRC_ID,V_BEFORE,V_AFTER) AS
(SELECT * FROM (VALUES
(1,'ABC','XYZ' )
,(1,'123','PDQ' )
,(1,'DEF','BLAH' )
,(2,'ABC','Fighters' )
,(2,'123','CAT' )
,(2,'DEF','Blue' )
,(3,'ABC','Strange' )
,(3,'123','Strange')
,(3,'DEF','Tea' )
,(4,'ABC','Phoenix' )
,(4,'123','Indeed' )
,(4,'DEF','Stuff' )
) AS X(SRC_ID,V_BEFORE,V_AFTER)
)
SELECT
BD.BD_ID
,BD.SRC_ID
,BD.BD_FLAG
,'BECOMES' AS TR_ACTION
,TS.V_AFTER
FROM BASE_DATE BD
INNER JOIN TRANSLATE_SET TS
ON BD.BD_FLAG = TS.V_BEFORE
WHERE BD.SRC_ID = TS.SRC_ID ;
Results
BD_ID SRC_ID BD_FLAG TR_ACTION V_AFTER
----------- ----------- ------- --------- --------
1 1 ABC BECOMES XYZ
2 1 123 BECOMES PDQ
3 1 DEF BECOMES BLAH
4 2 ABC BECOMES Fighters
5 2 123 BECOMES CAT
6 2 DEF BECOMES Blue
7 3 ABC BECOMES Strange
8 3 123 BECOMES Strange
9 3 DEF BECOMES Tea
10 4 ABC BECOMES Phoenix
11 4 123 BECOMES Indeed
12 4 DEF BECOMES Stuff