从两个数据区域中获取值,并在联接中使用它


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.这是不可能的,我无法加入工作!这个想法是查看从salesheader连接到我的transactiontable Nr_V - 问题是在两列之间的范围内查找journalnumber

销售标题

Nr_V    JournalnumberStart JournalNumberEnd 
100       1001002             1003000
101       1003001             1004000

销售翻译

Journalnumber  
1001004  
1001005
1003032

输出表

Nr_V    JournalNumber 
100     1001004 
100     1001005
101     1003032

因此,我们想要的是查找SalesHeader的范围,以便获得SalesTransaction和SalesHeader之间的关系!请记住,我的事务表中有 600 万行!和我的销售标题表中的 50000 行。

也许这样的事情会起作用:

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 小提琴

试试这个

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

小提琴

最新更新