I've written the below code to get the max ACUTAL_SHIP_DATE value if the PLANT column values are duplicated and it is working as expected.
SELECT A.PLANT,
A.SLOT_NUM,
A.CONSUMPTIONENDITEM,
A.SALESORDERNUMBER,
A.SOLINEITEM,
A.ACUTAL_SHIP_DATE
FROM (SELECT TOP 10
P.SLOT_NUM,
P.PLANT,
P.CONSUMPTIONENDITEM,
P.SALESORDERNUMBER,
P.SOLINEITEM,
T.SHIP_ACTUAL_DATE AS ACUTAL_SHIP_DATE
FROM SRTPROJECT P WITH (NOLOCK)
INNER JOIN V_SRT_TOOLINFO_CM T WITH (NOLOCK) ON P.SLOT_NUM = T.SLOT_NUM
AND P.PLANT = T.PLANT
AND P.CONSUMPTIONENDITEM = T.MAT_NUM) A
INNER JOIN (SELECT DI.PLANT,
MAX(DI.ACUTAL_SHIP_DATE) AS ACUTAL_SHIP_DATE
FROM (SELECT TOP 10
P.SLOT_NUM,
P.PLANT,
P.CONSUMPTIONENDITEM,
P.SALESORDERNUMBER,
P.SOLINEITEM,
T.SHIP_ACTUAL_DATE AS ACUTAL_SHIP_DATE
FROM SRTPROJECT P WITH (NOLOCK)
INNER JOIN V_SRT_TOOLINFO_CM T WITH (NOLOCK) ON P.SLOT_NUM = T.SLOT_NUM
AND P.PLANT = T.PLANT
AND P.CONSUMPTIONENDITEM = T.MAT_NUM) DI
GROUP BY DI.PLANT) B ON A.PLANT = B.PLANT
AND A.ACUTAL_SHIP_DATE = B.ACUTAL_SHIP_DATE;
in the above query Step1: Fetching the data from two tables and making collection.
SELECT TOP 10
P.SLOT_NUM,
P.PLANT,
P.CONSUMPTIONENDITEM,
P.SALESORDERNUMBER,
P.SOLINEITEM,
T.SHIP_ACTUAL_DATE AS ACUTAL_SHIP_DATE
FROM SRTPROJECT P WITH (NOLOCK)
INNER JOIN V_SRT_TOOLINFO_CM T WITH (NOLOCK) ON P.SLOT_NUM = T.SLOT_NUM
AND P.PLANT = T.PLANT
AND P.CONSUMPTIONENDITEM = T.MAT_NUM;
Step2: Applying Max if the PLANT column value is duplicated
(SELECT TOP 10 P.SLOT_NUM, P.PLANT, P.CONSUMPTIONENDITEM, P.SALESORDERNUMBER, P.SOLINEITEM,T.SHIP_ACTUAL_DATE AS ACUTAL_SHIP_DATE FROM SRTPROJECT P WITH (NOLOCK) INNER JOIN V_SRT_TOOLINFO_CM T WITH (NOLOCK) ON P.SLOT_NUM = T.SLOT_NUM AND P.PLANT = T.PLANT AND P.CONSUMPTIONENDITEM = T.MAT_NUM) AS A INNER JOIN (Select DI.PLANT, MAX(DI.ACUTAL_SHIP_DATE) AS ACUTAL_SHIP_DATE From (SELECT TOP 10 P.SLOT_NUM, P.PLANT, P.CONSUMPTIONENDITEM, P.SALESORDERNUMBER, P.SOLINEITEM, T.SHIP_ACTUAL_DATE AS ACUTAL_SHIP_DATE FROM SRTPROJECT P WITH (NOLOCK) INNER JOIN V_SRT_TOOLINFO_CM T WITH (NOLOCK) ON P.SLOT_NUM = T.SLOT_NUM AND P.PLANT T.PLANT AND P.CONSUMPTIONENDITEM = T.MAT_NUM) AS DI GROUP BY DI.PLANT)
Step3: then selecting all the columns which is required with the final query which is written initially
but the problem is I'm using same subquery twice. is there any way to remove the duplicate code.