Вам нужно: а) немного переписать ваш запрос, и б) я бы рекомендовал использовать псевдонимы таблиц , чтобы сделать ваш запрос более читабельным.
Попробуйте это:
;WITH ProductData AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY pth.Product_ID
ORDER BY pth.Product_ID, ps.sl_No DESC) AS rno,
tph.product_ID,
tph.process_ID,
ps.sl_No
FROM
Production.tblProcessSequence ps
INNER JOIN
Production.tblProductProcessHdr pph ON tph.product_Process_ID = ps.product_Process_ID
AND pph.isQC_Need = 1
INNER JOIN
Production.tblProductTemplateHdr tph ON tph.product_Temp_ID = pph.product_Temp_ID
)
SELECT *
FROM
ProductData
WHERE
rno = 1
Функция ROW_NUMBER()
разбивает ваши данные на Product_ID
и внутри каждого раздела упорядочивает строки по sl_No DESC
- таким образом, наибольшее значение sl_No
получает значение rno = 1
(все остальные получаютстаршие цифры в каждом разделе)