查询以获取单年记录

时间:2019-08-07 19:59:49

标签: sql sql-server

如何提取只有2019年末记录而不是2020年记录的记录。

下表5105474,5105475、5105476中具有2019年结束日期的示例。我只需要获取这些行

enter image description here

5 个答案:

答案 0 :(得分:1)

这是您想要的吗?

select id
from t
group by id
having year(max(enddate)) = 2019;

答案 1 :(得分:0)

您可以使用EXCEPT

SELECT id FROM t WHERE YEAR(ENDDATE) = 2019
EXCEPT 
SELECT id FROM t WHERE YEAR(ENDDATE) = 2020

答案 2 :(得分:0)

使用DATEDIFF函数可能会有些运气:

WHERE DATEDIFF(YEAR, EndDate, 2019) = 0

答案 3 :(得分:0)

您只需要更改结束日期的最大值即可与每个组ID的2020年日期不匹配,如下所示。

      select id
      from table
      group by id where 
          HAVING max(enddate) NOT LIKE 
          '%2020%';

答案 4 :(得分:0)

只是用另一种方式给猫皮剥皮。 WHERE...NOT EXISTS应该适合您。

select 
  id
from table as t
where 
  not exists 
    (
      select 1 
      from table as t1 
      where 
        t1.id = t.id 
        and 
        YEAR(t1.ENDDATE) = 2020
    );