using LEFT JOINdeclare @TableA table( TAID int, IPType varchar(10), IPID int)insert into @TableAselect 1, 'TableSAP', 1 union allselect 2, 'TableDAP', 1 union allselect 3, 'TableOPT', 5 union allselect 4, 'TableSAP', 4declare @TableSAP table( TSID int, tsVal1 varchar(10), tsVal2 varchar(10), tsVal3 varchar(10))insert into @TableSAPselect 1, 'green', 'red', 'blues' union allselect 2, 'pink', 'yellow', 'white' union allselect 4, 'orange', 'magneta', 'black'declare @TableDAP table( TDID int, tdVal1 varchar(10), tdVal2 varchar(10), tdVal3 varchar(10))insert into @TableDAPselect 1, 'car', 'boat', 'bike' union allselect 2, 'skate', 'shoe', 'balloon'declare @TableOPT table( TOID int, toVal1 varchar(10), toVal2 varchar(10), toVal3 varchar(10))insert into @TableOPTselect 1, 'cherry', 'banana', 'apple' union allselect 5, 'kiwi', 'grape', 'melon'select a.TAID, IPType = right(a.IPType, 3), IPID = a.IPID, Value1 = case IPType when 'TableSAP' then sap.tsVal1 when 'TableDAP' then dap.tdVal1 when 'TableOPT' then opt.toVal1 end, Value2 = case IPType when 'TableSAP' then sap.tsVal2 when 'TableDAP' then dap.tdVal2 when 'TableOPT' then opt.toVal2 end, Value3 = case IPType when 'TableSAP' then sap.tsVal3 when 'TableDAP' then dap.tdVal3 when 'TableOPT' then opt.toVal3 endfrom @TableA a left join @TableSAP sap on a.IPType = 'TableSAP' and a.IPID = sap.TSID left join @TableDAP dap on a.IPType = 'TableDAP' and a.IPID = dap.TDID left join @TableOPT opt on a.IPType = 'TableOPT' and a.IPID = opt.TOID/*TAID IPType IPID Value1 Value2 Value3 ----------- ------ ----------- ---------- ---------- ---------- 1 SAP 1 green red blues2 DAP 1 car boat bike3 OPT 5 kiwi grape melon4 SAP 4 orange magneta black*/
KH