我有一个付款表,用于存储与付款相关的数据。
Student_id is_payment_done timestamp
A111A11 false 2016/11/23 00:00:00
A111A11 false 2016/11/24 12:12:00
A111A11 false 2016/11/24 16:20:11*
B234A12 false
B234A12 false
B124A12 true
B123A12 false
在这里,我有student_id外键。现在,我想根据student_id选择记录,is_payment_done=false
并且我想显示例如的最新记录。上表中的A111A11
记录全部为is_payment_dont=false
最新记录,时间戳为2016/11/24 16:20:11*
我是SQL的新手,我尝试过使用group by,student_id
但是我不知道要使用哪个聚合函数以及在分组后如何检查所有记录的布尔字段。
我的SQL方法不需要子查询或其他任何东西,因为如果所有记录都是假的,那么MAX(timestamp)
也是假的。如果您不限制所有记录,则仍可以使用条件汇总来查找MAX(false timestamp)
。
SELECT
Student_id
,MAX(timestamp) as MaxTimeStamp
FROM
@Payment
GROUP BY
Student_id
HAVING
COUNT(*) = COUNT(CASE WHEN is_payment_done = 'false' THEN 1 END)
但是请注意,在您的示例数据中,A111A11,B123A12和B234A12都仅具有以下记录: is_payment_done = 'false'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句