Select drl.id, drl.ap, drl.sqn, drl.date
from srs_drl drl
这将输出如下内容:
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
对于每个唯一的前3列,我需要检索最早的日期。因此,对于上表,我希望返回:
14000001 01 01 05/11/2015
15000234 01 02 05/11/2015
15000234 01 03 06/11/2015
15000234 01 04 04/01/2016
非常感谢您对此查询的任何帮助。我尝试过使用TOP,但只返回整个表的第一条记录,而不是按前3列分组的第一条记录。
提前致谢
答案 0 :(得分:2)
GROUP BY
结合MIN
:
Select drl.id, drl.ap, drl.sqn, MIN(drl.date)
from srs_drl drl
group by drl.id, drl.ap, drl.sqn
或者,如果没有人使用相同的drl.id,drl.ap,drl.sqn,则NOT EXISTS
返回一行:
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)
请注意,date是ANSI SQL中的保留字,因此您可能需要编写"date"
。