返回没有匹配条目的所有日期

时间:2014-07-29 20:18:44

标签: sql sql-server

我已经尝试了一些我在SO上找到的其他解决方案,但它们似乎不适用于我的架构,或者我只是在使用SQL。所以,假设我有两个表,表1是这样的:

LastName | FirstName | Date

Doe        John        7/07/14
Doe        John        7/07/14
Doe        John        7/08/14
Bond       James       7/07/14
Bond       James       7/09/14
Jane       Mary        7/08/14

基本上,一个人将拥有某个特定日期的条目。他们也可以有一个日期的多个条目。表2是一系列日期,例如:

Date
7/06/14
7/07/14
7/08/14
7/09/14

我想要做的是获得一个结果集,该结果集显示表2中哪些人错过了一个条目,理想情况下也是该人的姓名。任何线索?谢谢!

1 个答案:

答案 0 :(得分:3)

试试这个,

;WITH CTE AS
(
  --create list of all names and date combinations from both table
  SELECT DISTINCT A.LastName, A.FirstName, B.Date_col
  FROM Table1 A, Table2 B
)
--select rows that are missing dates in your first table
SELECT X.* FROM CTE X
LEFT OUTER JOIN Table1 Y 
    ON X.LastName = Y.LastName 
    AND X.FirstName = Y.FirstName 
    AND X.Date_col = Y.Date_Col
WHERE Y.LastName IS NULL