2014-02-17 39 views
0
SELECT sh.Nr_V, 
     tt.journalnumber, 
     sh.journalnumber_end, 
     sh.journalnumerstart 
FROM transactiontable tt 
     LEFT JOIN salesheader sh 
       ON tt.journalnumer between sh.journalnumerstart 
        AND sh.journalnumber_end; 

以上顯示了我對Nr_V加入我的transactiontable的想法。
所以我想要所有的值在journalnumberstartjournalnumber_end之間,並用它們加入我的transactiontable。這是不可能的我無法加入工作!這個想法是看Nr_Vsalesheader加入我的transactiontable - 問題是在兩列之間的範圍內查找journalnumber從兩個數據範圍獲取值並在連接中使用它?

SalesHeader

Nr_V JournalnumberStart JournalNumberEnd 

100  1001002    1003000 
101  1003001    1004000 

SalesTransaktion

Journalnumber 

1001004 
1001005 
1003032 

可輸出

Nr_V JournalNumber 

100  1001004 
100  1001005 
101  1003032 

所以WHA我們想要的是在SalesHeader的範圍內查找以獲得SalesTransaction和SalesHeader之間的關係! 請記住,我的交易表中有600萬行!和我的銷售表中的50000行。

+1

你能提供的表的骨骼架構 –

回答

0

也許像這樣的工作:

SELECT sh.Nr_V, 
     tt.JournalNumber 
FROM SalesTransaction tt 
LEFT JOIN SalesHeader sh ON 
    (tt.Journalnumber > sh.JournalnumberStart) 
    AND 
    (tt.Journalnumber < sh.JournalNumberEnd) 
ORDER BY sh.Nr_V, tt.JournalNumber 

樣品SQL Fiddle

+0

對不起它只給我空殼! – user3310846

+0

@ user3310846真的嗎?當我用示例數據運行它時,它會給出所需的結果。你使用的是什麼DBMS?我嘗試使用MS SQL 2012. – jpw

+0

我正在使用MS SQL 2012企業版。我仍然收到空值。 – user3310846

0

試試這個

SELECT sh.nr_v, 
     st.journalnumber 
FROM salesheader sh 
     LEFT JOIN salestransaction st 
       ON st.journalnumber BETWEEN sh.journalnumberstart AND 
              sh.journalnumberend; 

fiddle

+0

小提琴那是我嘗試的例子(見上圖),沒有工作。這是我原來的疑問。 – user3310846

+0

我嘗試了MS SQL 2012及其工作[sqlfiddle](http://sqlfiddle.com/#!6/1cf65/1) –

+0

即使您的查詢工作正常 –