Как выбрать последнюю запись в сравнении с другой записью таблиц для каждого клиента в SQL?
У меня есть три таблицы в SQL:
tblCustomers pkCustomer <-- linked to fkCustomer strCustomerName tblCommunicationsLogs pkCommunicationLog fkCustomer tblCommunicationLogSteps pkCommunicationLogStep fkCommunicationLog <-- linked to pkCommunicationLog strCommunicationLogStep
У каждого клиента есть журнал связи, в который записываются шаги связи.
Я хотел бы создать представление для отображения последнего шага журнала для каждого клиента.
Но я просто не могу понять, как написать запрос.
Что я уже пробовал:
Я пробовал гуглить примеры, но на самом деле я не очень хорошо разбираюсь в SQL и просто недостаточно понимаю его.
Я знаю, что пытался сделать это в прошлом и был близок к этому, но теперь я не могу вспомнить, что я сделал, чтобы продолжать это.
Я предполагаю, что это похоже на SELECT MAX из tblCommunicationLogSteps, где pkCommunicationLog = fkCommunicationLog в tblCommunicationSteps, и, возможно, группа по клиенту?? но я просто не знаю.
#realJSOP
Нам нужно видеть столбцы для каждой таблицы.
BeginnerCoderPete
tblCommunicationsLogs
pkCommunicationLog
fkCustomer
tblCommunicationLogSteps
pkCommunicationLogStep
fkCommunicationLog <-- связан с pkCommunicationLog
strCommunicationLogStep
tblCustomers
pkCustomer <-- связан с fkCustomer
strCustomerName
#realJSOP
Используйте ссылку "улучшить вопрос", чтобы изменить свой вопрос.
Как определить последнюю запись шага журнала, если нет столбца datetime, указывающего, когда этот шаг был вставлен в таблицу?
BeginnerCoderPete
Я думал, что самые высокие pkCommunicationLogSteps, связанные с журналом, дадут мне последний шаг в этом журнале.
CHill60
Этот fkCommunicationsLog в tblCustomers подразумевает, что каждый клиент может иметь только одну запись журнала tblCommunication ... неужели это правда?
BeginnerCoderPete
Ваше право, это была моя ошибка, что в таблице нет fkCommunicationsLog. Моя ошибка.
0x01AA
Я бы предложил использовать CROSS APPLY:
SQL Server CROSS APPLY и OUTER APPLY[^]
...но не уверен, что он действительно работает над двумя соединениями :(