我有一张这样的表:
我想使用SQL编写一个查询,该查询返回最小日期至少为2013年3月12日的安全ID的所有行。也就是说,只选择那些在特定日期之后具有价格覆盖范围的证券。请参阅图片以获得更清晰的信息。
有人可以指导我吗?
感谢。
答案 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)