Соединить поле с диапазоном значений - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь извлечь данные из таблицы, которая ссылается на транзакции из другой таблицы.Я не могу понять, как получить желаемый результат.

Table1:

+--------+-------------+---------+
| Widget | SequenceNbr | Amount  |
+--------+-------------+---------+
| Thing1 |       12345 |  100.00 |
| Thing1 |       12346 |  110.00 |
| Thing2 |       12345 |   98.25 |
| Thing2 |       12347 |  877.99 |
| Thing3 |       12333 |  638.00 |
+--------+-------------+---------+

Table2:

+----------+------------------+----------------+
| BatchNbr | BeginSequenceNbr | EndSequenceNBr |
+----------+------------------+----------------+
|     9998 |            12300 |          12345 |
|     9999 |            12346 |          12350 |
+----------+------------------+----------------+

Я пытался создать, используя group by для first / last и различных сценариев соединения.

Пример запроса:

SELECT 
    Table1.[Widget],
    Table1.[SequenceNbr],
    Table1.[Amount], 
    Table2.[BatchNbr]
FROM 
    Table2 INNER JOIN Table1 ON 
    (Table2.BeginSequenceNbr) AND 
    (Table2.EndSequenceNbr = Table1.[SequenceNbr])
WHERE 
    (((Table1.[SequenceNbr]) Between [Enter Begin Sequence Nbr] And [Enter End Sequence Nbr])));

Если параметр запроса Sequence Range 12300 to12346, тогда желаемый вывод -

Thing1, 12345, 100.00, 9998
Thing1, 12346, 110.00, 9999
Thing2, 12345, 98.25, 9998
Thing3, 12333, 638.00, 9998

1 Ответ

0 голосов
/ 19 июня 2019

Попробуйте следующее:

select
    t1.widget, 
    t1.sequencenbr, 
    t1.amount, 
    t2.batchnbr
from
    table1 t1 inner join table2 t2 on
    t1.sequencenbr >= t2.beginsequencenbr and  
    t1.sequencenbr <= t2.endsequencenbr

Обратите внимание, что MS Access не сможет представлять объединение в конструкторе запросов, но ядро ​​базы данных JET, используемое MS Access, должно по-прежнему выполнять этот допустимый SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...