实例位于多个不同日期窗口之外的SQL提取列表

实例位于多个不同日期窗口之外的SQL提取列表,sql,sql-server-2012,Sql,Sql Server 2012,请原谅格式化的“表”--不确定如何添加一个。我有两张桌子。事务表: **Member**--**Service Date**- **Order Number** - 1 ----- 1/15/2013 ----- 651 - 2 ----- 2/2/2013 ----- 258 - 1 ----- 9/15/2013 ----- 113 - 1 ----- 11/1/2013 ----- 728 - 2 ----- 3/3/2013 -

请原谅格式化的“表”--不确定如何添加一个。我有两张桌子。事务表:

 **Member**--**Service Date**- **Order Number**
    - 1 ----- 1/15/2013 -----   651
    - 2 ----- 2/2/2013 -----    258
    - 1 ----- 9/15/2013 -----   113
    - 1 ----- 11/1/2013 -----   728
    - 2 ----- 3/3/2013 -----    309
    - 3 ----- 1/1/2013 -----    739
    - 4 ----- 11/30/2013 -----  226
    - 3 ----- 7/6/2013 -----    978
    - 3 ----- 8/7/2013 -----    266
    - 4 -----  4/1/2013 -----   198
    - 4 ----- 12/1/2013 -----   611
和资格表,每个成员有多个日期范围:

**Member**--**Elig. Begin**--**Elig. End**
    - 1 ----  1/1/2013 ---- 5/31/2013
    - 1 ----  8/1/2013 ---- 10/31/2013
    - 2 ---- 3/1/2013 ----  6/30/2013
    - 2 ---- 7/1/2013 ----  12/31/2013
    - 3 ---- 1/1/2013 ----  7/31/2013
    - 3 ---- 9/1/2013 ----  12/31/9999
    - 4 ---- 11/1/2013 ---- 12/31/9999
我的目标是返回在不同资格范围之外处理订单的实例,因为每个成员的资格范围会更改/发生多次,每个成员都有多个订单,所以我很难办。我希望上述表格的输出如下:

**Member**--**Service Date**--**Order Number*
    - 2 ---- 2/2/2013 ----  258
    - 1 ---- 11/1/2013 ---- 728
    - 3 ---- 8/7/2013 ----  266
    - 4 ---- 4/1/2013 ----  198
任何帮助都将不胜感激。非常感谢大家

最好的


Joe

有不同的方法,但一种似乎更容易遵循的方法是使用EXISTS,如下所示

SELECT Member, [Service Date], [Order Number]
FROM [transaction table] as tt
WHERE NOT EXISTS(
    SELECT * 
    FROM [eligibility table] as et 
    WHERE tt.Member=et.Member and tt.[Service Date] BETWEEN et.[Elig Begin] and et.[Elig End])