sqlserver SQL语句

图片说明
这是数据,sql语句是 select targstartdate,wonum,DATEDIFF(mm,targstartdate,GETDATE()) as a from wo where worktype = 'adt' and status in ('comp','close') order by wo.targstartdate desc
现在我想查找出每种a大于0的时间最大的那一条, 结果应该是第5条第9 条 第28 条,
而且只想要wonum字段,应该这么写啊?想了好久不会写

有点没懂 你的意思哦!

WITH x AS (
    SELECT targstartdate,
           wonum,
           DATEDIFF(mm,targstartdate,GETDATE()) as a
      FROM wo
     WHERE worktype = 'adt'
       AND status IN ('comp','close')
)
        SELECT y.a,
               z.wonum
          FROM (
                    SELECT a
                      FROM x
                     WHERE a > 0
                  GROUP BY a
               ) y
   CROSS APPLY (
                    SELECT TOP 1 wonum
                      FROM x
                     WHERE x.a = y.a
                  ORDER BY targstartdate DESC
               ) z