0

Bills を含むテーブルがあり、各 Bill は 20 のサブレジスタを持つことができます。

例 (請求書ごとの上位 5 件、最大 60,000 件の請求書)

(表 1)

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

別のテーブルには、請求書番号と下位行の範囲があります

例: (表 2)

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

クエリでは、次のことを達成したいと考えています。

表示するには、表 1 から、表 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 の 2 行目の 2 番目の条件は、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 に答える