0

我有一张账单表,每个账单可以有 20 个子寄存器。

示例(每张账单前 5 名,最多可达 60,000 张账单)

(表一)

Bill |   SubRow   |
-----+------------+
1000 |     1      |
1000 |     2      |
1000 |     3      |  
1000 |     4      |
1000 |     5      | 
1001 |     1      |  
1001 |     2      | 
1001 |     3      |  
1001 |     4      |  
1001 |     5      |  

在另一个表中,我有账单编号和子行范围

示例:(表二)

Bill | InitialRange | Final Range|
-----+--------------+------------+
1000 |     1        |      2     |
1000 |     4        |      5     |
1001 |     3        |      5     |

在查询中,我想实现以下目标:

为了显示,从表一中,所有记录不在表 2 中的范围之间。

这意味着我应该得到以下集合:

Bill |    SubRow  |
-----+------------+
1000 |     3      |
1001 |     1      |
1001 |     2      |  

到目前为止我所拥有的:

Select  Bill,SubRow 
 from TABLE ONE     
    LEFT  join TABLE TWO ON  TABLEONE.Bill= TABLETWO.bill
    where  Subrow < InitialRange and Subrow > FinalRange

但是 TABLETWO 中第二行的第二个条件覆盖了 1000 钞票的第一个条件。

关于如何实现这一目标的任何想法?

注意(我的表格看起来很乱,我会尝试修复它)

带有示例的图像:

http://postimg.org/image/ymc3z2uzx/

4

1 回答 1

1

尝试这个:

    SELECT * FROM TABLE_ONE WHERE NOT EXISTS 
(SELECT * FROM TABLE_TWO 
WHERE TABLE_ONE.Bill = TABLE_TWO.Bill 
AND TABLE_ONE.SubRow BETWEEN TABLE_TWO.IinitialRange AND TABLE_TWO.FinalRange)
于 2013-06-18T17:11:31.850 回答