Did you got your sample data and expected result correct ?
DECLARE @GLmaster TABLE( Glcode varchar(10), Gldesc varchar(20))INSERT INTO @GLmasterSELECT 'GL01', 'Plant & Machinery' UNION ALLSELECT 'GL02', 'Land & Building' UNION ALLSELECT 'GL03', 'Staff Welfare' UNION ALLSELECT 'GL04', 'Conveyance'DECLARE @Slmaster TABLE( Glcode varchar(10), Slcode varchar(10), Sldesc varchar(20))INSERT INTO @SlmasterSELECT 'GL03', 'SL01', 'Tea Expenses' UNION ALLSELECT 'GL03', 'SL02', 'Food Expenses' UNION ALLSELECT 'GL03', 'SL03', 'Fitness Expenses' UNION ALLSELECT 'GL04', 'SL04', 'Bus fare' UNION ALLSELECT 'GL04', 'SL05', 'Train fare'DECLARE @Trans TABLE( Refno varchar(10), Glcode varchar(10), Slcode varchar(10), Amount int)INSERT INTO @TransSELECT 'RF01', 'GL01', NULL, 1000 UNION ALLSELECT 'RF02', 'GL04', 'SL04', 400 UNION ALLSELECT 'RF03', 'GL02', NULL, 2000 UNION ALLSELECT 'RF04', 'GL03', 'SL02', 200SELECT t.Refno, t.Glcode, t.Slcode, t.Amount, [DESC] = coalesce(g.Gldesc, s.Sldesc)FROM @Trans t left JOIN @GLmaster g ON t.Glcode = g.Glcode AND t.Slcode IS NULL left JOIN @Slmaster s ON t.Glcode = s.Glcode AND t.Slcode = s.Slcode/*Refno Glcode Slcode Amount DESC ---------- ---------- ---------- ----------- -------------------- RF01 GL01 NULL 1000 Plant & MachineryRF02 GL04 SL04 400 Bus fareRF03 GL02 NULL 2000 Land & BuildingRF04 GL03 SL02 200 Food Expenses*/
KH[spoiler]Time is always against us[/spoiler]