[英]How to get corresponding cell value of max from different column
我只是想獲得那些折扣率最高的記錄。 為此,我使用了最大 function。 但我無法獲取它對應的列(nPackageDiscountedAdultPrice)值。 我在 nPackageDiscountedAdultPrice 列中得到錯誤的值。(MYSQL)。
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 tblpackagedetails pkg ON pkga.nPackageId=pkg.nPackageId
where vbs.nMainCategoryId=9;
為此,我為 bs.nBusinessDetailsId 添加了 group by 子句。 然后我得到了第二高的 nDiscountPercentage,這是錯誤的。 我想要第一個最高的 nDiscountPercentage,它是對應的 nPackageDiscountedAdultPrice
這是我的查詢。
select bs.nBusinessDetailsId,bs.strBusinessName,bs.strBusinessDescription,
pkg.nPackageDiscountedAdultPrice,max(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 tblpackagedetails pkg ON pkga.nPackageId=pkg.nPackageId
where vbs.nMainCategoryId=9 group by bs.nBusinessDetailsId;
我猜你想要nDiscountPercentage
最大的行的nPackageDiscountedAdultPrice
值。
最好使用相當棘手的子查詢來檢索
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
你可以測試一下。 它的內部查詢找到每個 package 的最大折扣。 然后它在 JOIN 中使用該值為您提供nPackageId
tblpackagedetails
最大百分比折扣的行的子集。 如果多行具有相同的最大折扣,您將獲得所有這些並在最終結果集中有重復項。
然后你將它加入到你的主查詢中。
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...
聚合已移至子查詢。
您應該通過 nBusinessDetailsId 加入 maxPerc 組的子查詢(不含價格)
select t.nBusinessDetailsId
,t.strBusinessName
,t.strBusinessDescription
,pkg.nPackageDiscountedAdultPrice
,t.maxPerc
from (
select bs.nBusinessDetailsId
, bs.strBusinessName
, bs.strBusinessDescription
, max(pkg.nDiscountPercentage) maxPerc
from tblbusinessdetails bs
INNER JOIN tblvendorbusinesscategory vbs ON bs.nBusinessDetailsId=vbs.nBusinessDetailsId
INNER JOIN tblpackageassociatedoutlets pkga ON bs.nBusinessDetailsId=pkga.nOutletId
INNER JOIN tblpackagedetails pkg ON pkga.nPackageId=pkg.nPackageId
where vbs.nMainCategoryId=9
group by bs.nBusinessDetailsId
) t
INNER JOIN tblpackageassociatedoutlets pkga ON t.nBusinessDetailsId=pkga.nOutletId
INNER JOIN tblpackagedetails pkg ON pkga.nPackageId=pkg.nPackageId
AND t.maxPerc =pkg.nDiscountPercentage
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.