• Here are some alternative methods.

    You could create a View from your #veg_tab and #non_veg_tab tables, that includes an additional column (stype) indicating the original source table of the row ('N' or 'V'), and join to this view on the sid and stype columns.

    If you are not allowed/willing to create a View, you could join to a derived table or a CTE created from your #veg_tab and #non_veg_tab tables.

    SELECT MGR.sno, MGR.sname, FOOD.item_name, FOOD.stype

    FROM #mgr_tab MGR

    JOIN (

    SELECT 'V', sid, veg_name FROM #veg_tab

    UNION ALL

    SELECT 'N', sid, non_veg_name FROM #non_veg_tab

    ) FOOD(stype, sid, item_name)

    ON (MGR.sid = FOOD.sid AND MGR.stype = FOOD.stype)

    ;WITH FOOD(stype, sid, item_name) AS (

    SELECT 'V', sid, veg_name FROM #veg_tab

    UNION ALL

    SELECT 'N', sid, non_veg_name FROM #non_veg_tab

    )

    SELECT MGR.sno, MGR.sname, FOOD.item_name, FOOD.stype

    FROM #mgr_tab MGR

    JOIN FOOD ON (MGR.sid = FOOD.sid AND MGR.stype = FOOD.stype)