id tmpname date_used tkt_nr ---|---------|------------------|--------| 1 | template| 04/03/2009 16:10 | 00011 | 2 | templat1| 04/03/2009 16:11 | 00011 | 5 | templat2| 04/03/2009 16:12 | 00011 | 3 | diffname| 03/03/2009 15:11 | 00022 | 4 | diffname| 03/03/2009 16:12 | 00022 | 6 | another | 03/03/2009 16:13 | NULL | 7 | somethin| 24/12/2008 11:12 | 00023 | 8 | name | 01/01/2009 12:12 | 00026 |
我想得到结果:
id tmpname date_used tkt_nr ---|---------|------------------|--------| 5 | templat2| 04/03/2009 16:12 | 00011 | 4 | diffname| 03/03/2009 16:12 | 00022 | 7 | somethin| 24/12/2008 11:12 | 00023 | 8 | name | 01/01/2009 12:12 | 00026 |
因此,我要寻找的是tkt_nr基于datetime的最大值具有不同的值(不包括NULL)。
tkt_nr
我尝试了几种选择,但总是失败
SELECT * FROM templateFeedback a JOIN ( SELECT ticket_number, MAX(date_used) date_used FROM templateFeedback GROUP BY ticket_number ) b ON a.ticket_number = b.ticket_number AND a.date_used = b.date_used
我将不胜感激任何帮助。不幸的是,我需要与SQL Server兼容的代码。
自从我发现窗口函数以来,我就不再以这种方式做事。经常有两个记录具有相同的时间戳记,而我在结果集中得到两个记录。这是tSQL的代码。与Oracle类似。我认为mySQL还不支持。
Select id, tmpname, date_used, tkt_nbr From ( Select id, tmpname, date_used, tkt_nbr, rownum = Row_Number() Over (Partition by tkt_nbr Order by date_used desc) ) x Where row_num=1