如果我有一个如下所示的表格,并且我想找到每个ID的最大日期,只要ID组中至少有一个元素的Info值为1.因此,两者都不包括ID 2 ID为2的元素的信息值为2.包含ID 1和3,因为这些ID字段至少有1个Info值为1的元素。
ID Date Info
---------------------------
1 01-01-2013 1
1 02-02-2013 2
1 03-03-2013 2
2 01-01-2013 2
2 04-04-2013 2
3 01-01-2013 3
3 05-05-2013 1
3 06-06-2013 1
所以输出看起来像这样。
ID MaxDate
-----------------
1 03-03-2013
3 06-06-2013
非常感谢你的帮助。
答案 0 :(得分:0)
这对你有用吗?
Select id, max(date)
From my_table
where id in (select id from my_table where info = 1)
group by id
答案 1 :(得分:0)
您可以使用EXISTS谓词来检查给定ID存在info = 1的记录
SELECT T.ID, MaxDate = MAX(T.Date)
FROM T
WHERE EXISTS
( SELECT 1
FROM T T2
WHERE T2.ID = T.ID
AND T2.Info = 1
)
GROUP BY T.ID;
您可以使用HAVING
子句中的条件聚合实现相同的功能:
SELECT T.ID, MaxDate = MAX(T.Date)
FROM T
GROUP BY T.ID
HAVING COUNT(CASE WHEN T.Info = 1 THEN 1 END) > 0;