Я хочу написать запрос для отображения всей информации о Клиенте, совершившем самую высокую транзакцию. Ожидается, что вновь созданный столбец суммы к оплате будет использоваться для определения самой крупной транзакции.
Верхняя таблица — это моя таблица клиентов, а нижняя — таблица транзакций
Самая высокая транзакция была совершена Кеном, но мне нужно написать запрос, который показывает всю его строку из таблицы клиентов и ничего больше.
Я думаю, что это сработает для вас:
select c.CustomerID, c.FirstName, c.LastName, c.Addrass, c.PostCode, c.Email, c.DOB
from CustomerTable as c, TransactionTable as t
where c.CustomerID = t.CustomerID
AND Amount_Due = (select Max(Amount_Due) from TransactionTable)
Получил сообщение об ошибке: «Сообщение 209, уровень 16, состояние 1, строка 149, неоднозначное имя столбца «CustomerID». И когда я сделал Customer.CustomerID, он говорит: «Сообщение 4104, уровень 16, состояние 1, строка 149. Многокомпонентный идентификатор «Customer.CustomerID» не может быть связан».
@HektikSwift, серьезно, не используйте этот синтаксис соединения.
Я бы порекомендовал order by
и top
:
select c.*, t.*
from customer c
inner join (select top (1) with ties * from transaction t order by amount_due desc) t
on t.customerid = c.customerid
Подзапрос выбирает транзакцию с наибольшим amount_due
(при наличии связей они сохраняются). Затем мы можем объединить это с таблицей клиентов.
Сообщение 4104, уровень 16, состояние 1, строка 152 Не удалось связать составной идентификатор Transaction.CustomerID. Сообщение 209, уровень 16, состояние 1, строка 149 Неоднозначное имя столбца «CustomerID». Сообщение 207, уровень 16, состояние 1, строка 149 Недопустимое имя столбца «Адрес».
@HektikSwift: эти имена столбцов взяты из изображения, которое вы показали. Если нет ваших реальных имен столбцов, вам нужно будет их изменить...
Изображение, которое я показал, представляет собой скриншоты из моих реальных таблиц, поэтому имена столбцов такие же, как на изображениях.
Какая у вас версия SQL Server?