SQL:选择符合分组最小值条件的记录

时间:2018-01-22 11:03:03

标签: sql

我有一张这样的表:

Image for clarity

我想使用SQL编写一个查询,该查询返回最小日期至少为2013年3月12日的安全ID的所有行。也就是说,只选择那些在特定日期之后具有价格覆盖范围的证券。请参阅图片以获得更清晰的信息。

有人可以指导我吗?

感谢。

2 个答案:

答案 0 :(得分:0)

以下是使用EXISTS

的一种方法
SELECT *
FROM   yourtable a
WHERE  EXISTS (SELECT 1
               FROM   yourtable b
               WHERE  a.security_ID = b.security_Id
               HAVING Min(b.date) >= '2013-03-12') 

如果您的数据库引擎支持Over子句

SELECT *
FROM   (SELECT *,
               Min(date)OVER(partition BY security_ID) AS MinDate
        FROM   yourtable)a
WHERE  MinDate >= '2013-03-12' 

答案 1 :(得分:0)

参考以下查询

 SELECT * FROM YOURTABLE WHERE SECURITY_ID NOT IN(
 SELECT SECURITY_ID FROM YOURTABLE WHERE CONVERT (DATE,DT)< '12-MAR-13' GROUP BY SECURITY_ID)