Sql 返回组中最早的记录

Sql 返回组中最早的记录,sql,sql-server,Sql,Sql Server,这将输出如下内容: Select drl.id, drl.ap, drl.sqn, drl.date from srs_drl drl 对于每个唯一的前3列,我需要检索最早的日期。因此,对于上表,我希望返回: 14000001 01 01 05/11/2015 14000001 01 01 06/11/2015 14000001 01 01 01/12/2015 14000001 01 01 04/01/2016 15000234 01 02 05/11/201

这将输出如下内容:

Select drl.id, drl.ap, drl.sqn, drl.date 
from srs_drl drl
对于每个唯一的前3列,我需要检索最早的日期。因此,对于上表,我希望返回:

14000001  01  01  05/11/2015
14000001  01  01  06/11/2015
14000001  01  01  01/12/2015
14000001  01  01  04/01/2016
15000234  01  02  05/11/2015
15000234  01  03  06/11/2015
15000234  01  03  01/12/2015
15000234  01  04  04/01/2016
如果您有任何疑问,我们将不胜感激。我尝试使用TOP,但它只返回整个表的第一条记录,而不是按前3列分组的第一条记录

提前感谢

与MIN组合进行分组:

或者,如果没有具有相同drl.id、drl.ap、drl.sqn的人更早,则不存在返回行的命令:

Select drl.id, drl.ap, drl.sqn, MIN(drl.date)
from srs_drl drl
group by drl.id, drl.ap, drl.sqn

请注意,日期在ANSI SQL中是一个保留字,因此您可能需要写入日期。

或将日期用方括号括起来-drl.[date]这些d*mn方括号。。。是的,它们也能用。谢谢你!我用了这个小组,效果很好。非常感谢,本质上这是一个很容易解决的问题,我只是有一个真正的精神空白-没有帮助-这是16:45结束了漫长的一天的工作。
Select drl.id, drl.ap, drl.sqn, MIN(drl.date)
from srs_drl drl
group by drl.id, drl.ap, drl.sqn
Select drl.id, drl.ap, drl.sqn, drl.date
from srs_drl drl
where not exist (select 1 from from srs_drl d2
                 where d2.id = drl.id
                   and d2.ap = drl.ap
                   and d2.sqn = drl.sqn 
                   and d2.date < drl.date)