Я работаю над отчетами о старом для аккаунтов в течение 30 дней, и я присоединяюсь к таблице «Комментарий», потому что AP хочет увидеть последний комментарий, если он существует для клиента.SQL - возвращает только последнюю строку
Таблица комментариев может содержать несколько строк для одного и того же клиента для каждого комментария, прикрепленного к этому клиенту, причем первая запись является самым старым комментарием.
Когда я присоединяюсь к столам, все работает, но возвращает первый комментарий не последним.
Как я могу найти его для поиска нескольких строк для одного и того же клиента, а затем вернуть последний комментарий?
* Примечание - комментарий таблица не имеет даты только поле начинается с 1000 и увеличивается для каждого нового комментария строки
Это то, что я есть сейчас:
SELECT
dbo.[Pioneer-CO$Purchase Header].No_,
dbo.[Pioneer-CO$Purchase Line].[Amt_ Rcd_ Not Invoiced],
dbo.[Pioneer-CO$Purch_ Rcpt_ Header].[Posting Date],
dbo.[Pioneer-CO$Comment Line].[Comment],
dbo.[Pioneer-CO$Purchase Header].[Sell-to Customer No_]
FROM
dbo.[Pioneer-CO$Purchase Header]
INNER JOIN
dbo.[Pioneer-CO$Purchase Line] ON dbo.[Pioneer-CO$Purchase Header].No_ = dbo.[Pioneer-CO$Purchase Line].[Document No_]
INNER JOIN
dbo.[Pioneer-CO$Purch_ Rcpt_ Header] ON dbo.[Pioneer-CO$Purchase Header].No_ = dbo.[Pioneer-CO$Purch_ Rcpt_ Header].[Order No_]
INNER JOIN
dbo.[Pioneer-CO$Comment Line] ON dbo.[Pioneer-CO$Purchase Header].[Sell-to Customer No_] = dbo.[Pioneer-CO$Comment Line].[No_]
WHERE
(dbo.[Pioneer-CO$Purch_ Rcpt_ Header].[Posting Date] < DATEADD(day, - 30, GETDATE()))
GROUP BY
dbo.[Pioneer-CO$Purchase Header].No_,
dbo.[Pioneer-CO$Purchase Line].[Amt_ Rcd_ Not Invoiced],
dbo.[Pioneer-CO$Purch_ Rcpt_ Header].[Posting Date],
dbo.[Pioneer-CO$Comment Line].[Comment],
dbo.[Pioneer-CO$Purchase Header].[Sell-to Customer No_]
HAVING
(dbo.[Pioneer-CO$Purchase Line].[Amt_ Rcd_ Not Invoiced] > '0')
ORDER BY
dbo.[Pioneer-CO$Purch_ Rcpt_ Header].[Posting Date] DESC
Как и ваша описанная проблема, имейте в виду, что, поскольку вы используете только INNER JOINs, если у клиента нет комментариев вообще, они не будут отображаться в отчете, независимо от того, сколько лет их долг. –
'[дата публикации] desc' вернет первый/последний, так как нисходящий означает« новейший первый ». попробуйте 'asc' вместо этого - самый старый первый –