Попытка создать 4-сторонний запрос для упражнения MSSQL. Позвольте мне кратко описать таблицы:
4 основных таблицы, поставщики (подробности поставщика, pk vendorId), счета-фактуры (подробности счета pk InvoiceId, fk VendorID), InvoiceLineItems (I) и GlAccounts (accountNo pk).
Запрос: Написать оператор SELECT, который возвращает четыре столбца: VendorName, AccountDescription, LineItemCount и LineItemSum. LineItemCount - это количество строк, а LineItemSum - сумма столбца InvoiceLineItemAmount
Мое решение:
SELECT Vendors.VendorName, GLAccounts.AccountDescription,
SUM(InvoiceLineItems.InvoiceLineItemAmount) as LineItemSum,
Count (InvoiceLineItems.InvoiceID) as LineItemCount
FROM Vendors INNER JOIN Invoices
ON Vendors.VendorID = Invoices.VendorID
INNER JOIN InvoiceLineItems
ON Invoices.InvoiceID = InvoiceLineItems.InvoiceID
INNER JOIN GLAccounts
ON InvoiceLineItems.AccountNo = GLAccounts.AccountNo
ORDER BY Vendors.VendorName
ВЫПУСК:
Сообщение 8120, уровень 16, состояние 1, строка 1
Столбец Vendors.VendorName недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.
ДИЛЕММА:
Не уверен, почему эта проблема происходит, потому что я очень четко упоминаю Vendors.VendorName в предложении Group By. Я подозреваю, что это как-то связано с внутренними соединениями, которые я выполняю, поскольку их много, у меня должно быть что-то не так.
Может кто-нибудь определить, что здесь не так?