Попытаюсь от обратного
Представим, что у Вас в самом внешнем FROM соединено две derived table (назовем их T2 и T3)
А внутри каждой из них - еще по одной derived table, и обе вполне законно могут называться T1
И если в самом внешнем запросе указать T1.COMPANY_CODE, то сервер просто не будет понимать - а
из какого именно T1 ему брать данные
То есть вот такой вот совершенно идиотский (но с точки зрения синтаксиса - не ошибочный) запрос
SELECT T2.COMPANY_CODE,T2.WAREHOUSE, T3.PART_CODE, T3.BEST_BEFORE,
IC_RETEST_DATE = CASE WHEN(T2.BEST_BEFORE>DATEADD(MONTH,1,GETTIME()))
THEN T2.BEST_BEFORE ELSE DATEADD(MONTH,1,GETTIME()) END
,T1.COMPANY_CODE
FROM
(SELECT COMPANY_CODE,WAREHOUSE, PART_CODE,
BEST_BEFORE = CASE WHEN(BEST_BEFORE>GETTIME()) THEN BEST_BEFORE ELSE GETTIME()
FROM
(SELECT COMPANY_CODE, WAREHOUSE, PART_CODE,
DATEADD(DAY,CREATE_DATE,SHELF_LIFE) BEST_BEFORE
FROM PRODUCT_MASTER
WHERE ACTIVE_STATUS='A'
) T1
WHERE BEST_BEFORE BETWEEN YEAR(GETDATE()) AND YEAR(GETDATE())+1
) T2
cross join
(SELECT COMPANY_CODE,WAREHOUSE, PART_CODE,
BEST_BEFORE = CASE WHEN(BEST_BEFORE>GETTIME()) THEN BEST_BEFORE ELSE GETTIME()
FROM
(SELECT COMPANY_CODE, WAREHOUSE, PART_CODE,
DATEADD(DAY,CREATE_DATE,SHELF_LIFE) BEST_BEFORE
FROM PRODUCT_MASTER
WHERE ACTIVE_STATUS='B'
) T1
WHERE BEST_BEFORE BETWEEN YEAR(GETDATE())+1 AND YEAR(GETDATE())+2
) T3