Внутренний запрос на соединение не извлекает самый последний результат - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно обновить поле «Товар».согласно последнему результату поля «Источник №»таблицы "Запись в книгу элементов"

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

Так что, если я сделаю этот запрос с конкретным случаем,

select top(1)
    [MR$Item].[No_], 
    [MR$Item Ledger Entry].[Item No_],
    [MR$Item].[Vendor No_], 
    [MR$Item Ledger Entry].[Source No_], 
    [MR$Item Ledger Entry].[Entry Type],
    [MR$Item Ledger Entry].[Posting Date]
from [MR$Item]
    left outer join [MR$Item Ledger Entry] on [MR$Item].[No_] = [MR$Item Ledger Entry].[Item No_] 
where
    [MR$Item Ledger Entry].[Entry Type] = 0
    and [MR$Item].[Vendor No_] <> [MR$Item Ledger Entry].[Source No_]
    AND year([MR$Item Ledger Entry].[Posting Date])>=2018
    AND [MR$Item].[No_] = '3510100011' 
order by [MR$Item Ledger Entry].[Posting Date] DESC

я получу эти результаты

No_         Item No_    Vendor No_  Source No_  Entry Type  Posting Date
3510100011  3510100011  505881497   172140064   0           2018-09-27 00:00:00.000

Но, делая этот простой выбор, я вижу, что последний результат не верен

   select top(1)
        [MR$Item Ledger Entry].[Item No_],
        [MR$Item Ledger Entry].[Source No_], 
        [MR$Item Ledger Entry].[Entry Type],
        [MR$Item Ledger Entry].[Posting Date]
    from [MR$Item Ledger Entry]
    where
        [MR$Item Ledger Entry].[Entry Type] = 0 AND 
        year([MR$Item Ledger Entry].[Posting Date]) >= 2018 AND
        [MR$Item Ledger Entry].[Item No_] = '3510100011' 
order by [MR$Item Ledger Entry].[Posting Date] DESC

Результаты:

Item No_    Source No_  Entry Type  Posting Date
3510100011  508606977   0   2018-01-09 00:00:00.000

И правильный результат для элемента "3510100011". У меня должен быть номер "508606977".

Что я делаюнеправильно?

1 Ответ

0 голосов
/ 04 октября 2018

Поскольку в вашем запросе вы вводите:

AND [MR$Item Ledger Entry].[Item No_]='3510100011' 

И вы можете изменить левое соединение на внутреннее соединение, потому что вы делаете, где в таблице [MR $ Item Ledger Entry]

...