Думаю, вам нужно значение nPackageDiscountedAdultPrice
для строки с наибольшим nDiscountPercentage
.
Лучше всего получить с помощью довольно сложного подзапроса
SELECT a.*
FROM tblpackagedetails a
JOIN (SELECT MAX(nDiscountPercentage) nDiscountPercentage,
nPackageId
FROM tblpackagedetails
GROUP BY nPackageId
) b ON a.nDiscountPercentage = b.nDiscountPercentage
AND a.nPackageId = b.nPackageId
Вы можете это проверить. Его внутренний запрос находит самую большую скидку для каждого пакета. Затем он использует это значение в JOIN, чтобы предоставить вам подмножество строк из tblpackagedetails
с наибольшей процентной скидкой для каждой nPackageId
. Если в нескольких строках указана одинаковая самая большая скидка, вы получите их все, а в окончательном наборе результатов будут дубликаты.
Затем вы присоединяете его к своему основному запросу.
select bs.nBusinessDetailsId,bs.strBusinessName,bs.strBusinessDescription,
pkg.nPackageDiscountedAdultPrice,pkg.nDiscountPercentage
from tblbusinessdetails bs
INNER JOIN tblvendorbusinesscategory vbs
ON bs.nBusinessDetailsId=vbs.nBusinessDetailsId
INNER JOIN tblpackageassociatedoutlets pkga
ON bs.nBusinessDetailsId=pkga.nOutletId
INNER JOIN ( SELECT a.*
FROM tblpackagedetails a
JOIN (SELECT MAX(nDiscountPercentage) nDiscountPercentage,
nPackageId
FROM tblpackagedetails
GROUP BY nPackageId
) b ON a.nDiscountPercentage = b.nDiscountPercentage
AND a.nPackageId = b.nPackageId
) pkg ON pkga.nPackageId=pkg.nPackageId
where vbs.nMainCategoryId=9;
Обратите внимание, что агрегат MAX() ... GROUP BY ...
перемещен в подзапрос.