如何从一个表中选择特定年份不存在的所有记录?

时间:2016-12-14 02:50:32

标签: sql sql-server tsql

表格如下所示

num  Year
 1 | 2014
 2 | 2014
 3 | 2014
 2 | 2015
 4 | 2015
 5 | 2015
 6 | 2015

我希望我的查询返回

 4 | 2014
 5 | 2014
 6 | 2014
 1 | 2015
 3 | 2015

从1到6,特定年份未使用的数字。

1 个答案:

答案 0 :(得分:2)

生成所有组合,然后取出存在的组合:

select n.num, y.year
from (select distinct num from t) n cross join
     (select distinct year from t) y left join
     t
     on t.num = n.num and t.year = y.year
where t.num is null;

请注意,year是SQL Server中列的错误名称,因为它是函数和关键字的名称(想想datepart())。