sql - 提取日期直接小于感兴趣日期的所有行
问题描述
我目前有一个包含以下字段的表:
姓名 | 日期 | 旗帜 |
---|---|---|
约翰 | 5-28-10 | ñ |
约翰 | 5-28-10 | ñ |
约翰 | 5-28-10 | ñ |
约翰 | 5-29-10 | 是 |
瑞克 | 7-14-12 | ñ |
瑞克 | 9-02-13 | ñ |
瑞克 | 15 年 4 月 21 日 | 是 |
瑞克 | 17 年 6 月 21 日 | ñ |
我想提取第一个日期小于标志列中带有“Y”的日期的所有行。所以对于约翰,我想拉出日期为 5-28-10 的所有 3 行。但是对于 Rick,我只想拉出日期为 9-02-13 的行。
所以所需的输出看起来像:
姓名 | 日期 | 旗帜 |
---|---|---|
约翰 | 5-28-10 | ñ |
约翰 | 5-28-10 | ñ |
约翰 | 5-28-10 | ñ |
瑞克 | 9-02-13 | ñ |
有什么办法可以做到这一点吗?
解决方案
您可以使用:
select t.*
from t
where t.flag <> 'Y' and
t.date < (select min(t2.date)
from t t2
where t2.name = t.name and t.flag = 'Y'
);
推荐阅读
- database - 我的 H2/C3PO/Hibernate 设置似乎没有保留准备好的语句?
- ios - 基本视图占用过多 CPU
- html - 拖动时退出禁止光标
- netsuite - ReferenceError - 未定义上下文 (Netsuite)
- java - Gradle.properties 未传递到我的 Java 应用程序
- windows - 为什么 signtool.exe 以管理员身份运行时只能找到证书?
- mysql - 全新安装后无法设置mysql root密码
- android - 辅助功能服务:获取可以即时交互的视图(与语音访问相同)?
- angular - 如何使 Angular 8 与 IE11 兼容?
- vb.net - 安装时的奇怪问题