2013-06-18 31 views
0

我有一個表格,每個Bill可以有20個子寄存器。SQL如何過濾在另一個表中有兩個範圍的表格

例(前五名每比爾,可高達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  | 

在查詢我WA NT實現如下:

要顯示,從表中的一個,所有的記錄不beetween表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/

+0

好,表是弄亂。 Fixi'n他們。 – Devorak

回答

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) 
+0

AWESOOME !!!在過去的2天裏我一直在爲此奮鬥...... 非常感謝米哈伊爾 – Devorak

相關問題