2015-11-06 61 views
-1

努力寻找我可以在查询结果中显示最大注册金额。就目前而言,我只能输出名称。这是一个任务,它必须是一个子查询。感谢您的帮助子查询结果的问题

SELECT FirstName, LastName 
    FROM tblattendees 
    WHERE (SELECT MAX(RegistrationPaid) FROM tblregistration 
    WHERE tblattendees.AttendeeID = tblregistration.AttendeeID) 
    >= ALL (SELECT MAX(RegistrationPaid) FROM tblregistration GROUP BY AttendeeID); 
+1

如果你喜欢,可以考虑下面这个简单的两一步一步的行动:1.如果您尚未这样做,请提供适当的CREATE和INSERT语句(和/或sqlfiddle),以便我们可以更轻松地复制问题。 2.如果您尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。 – Strawberry

回答

0

如果了解您的查询正确想要attendies其最大的注册支付等于支付任何与会者最大regitration的列表。

如果因此它可以通过加入几个子查询来实现: -

SELECT FirstName, LastName, sub0.MaxRegistrationPaid 
FROM tblattendees 
INNER JOIN 
(
    SELECT AttendeeID, MAX(RegistrationPaid) AS MaxRegistrationPaid 
    FROM tblregistration 
    GROUP BY AttendeeID 
) sub0 
ON tblattendees.AttendeeID = sub0.AttendeeID 
INNER JOIN 
(
    SELECT MAX(RegistrationPaid) AS MaxRegistrationPaid 
    FROM tblregistration 
) sub1 
ON sub0.MaxRegistrationPaid = sub1.MaxRegistrationPaid 

也可以用做HAVING: -

SELECT FirstName, LastName, MAX(RegistrationPaid) AS MaxRegistrationPaid 
FROM tblattendees 
INNER JOIN tblregistration 
ON tblattendees.AttendeeID = tblregistration.AttendeeID 
CROSS JOIN 
(
    SELECT MAX(RegistrationPaid) AS HighestRegistrationPaid 
    FROM tblregistration 
) sub1 
GROUP BY FirstName, LastName 
HAVING MaxRegistrationPaid >= HighestRegistrationPaid