【发布时间】:2014-06-10 09:52:39
【问题描述】:
我正在尝试编写一个 SQL 查询来显示发送给客户的最新发票的日期。阅读后,使用 MAX() 聚合函数和 GROUP BY 似乎是要走的路。
但是,我的查询抛出了一个错误。我试过只按函数分组(如下面的代码所示),并按所有内容分组,但都不起作用。
SQL 是:
SELECT
ClientSupplier.ClientID AS ClientID,
ClientSupplier.ContactID AS ContactID,
ClientSupplier.ClientCode AS ClientCode,
Contact.Pref AS Pref,
Contact.FName AS FName,
Contact.LName AS LName,
ContactPartnerHistory.PartnerID AS PartnerID,
ContactPartnerHistory.EndDate AS EndDate,
Partner.PartnerID AS PartnerID2,
Partner.EmployeeID AS EmployeeID,
Employee.EmployeeID AS EmployeeID2,
Employee.PrefTemp AS PrefTemp,
Employee.FNameTemp AS FNameTemp,
Employee.SNameTemp AS SNameTemp,
Bill.BillToClientID AS BillToClientID,
Bill.InvoiceDate AS InvoiceDate,
Max(Bill.InvoiceDate) AS MostRecentInvoiceDate
FROM
Bill
INNER JOIN
(ClientSupplier
INNER JOIN
(Contact
INNER JOIN
(ContactPartnerHistory
INNER JOIN
(Partner
INNER JOIN
Employee ON Partner.EmployeeID = Employee.EmployeeID)
ON Partner.PartnerID = ContactPartnerHistory.PartnerID)
ON Contact.ContactID = ContactPartnerHistory.ContactId)
ON Contact.ContactID = ClientSupplier.ContactID)
ON ClientSupplier.ClientID = Bill.BillToClientID
WHERE
ClientSupplier.ClientCode NOT LIKE '%zz%'
AND ContactPartnerHistory.EndDate IS NULL
AND Employee.SNameTemp LIKE '%payroll%'
GROUP BY
Max(Bill.InvoiceDate)
我在这里 checked the answers 重新评估了我收到的错误消息,但他们似乎建议将所有内容包含在组中会清除它,但事实并非如此。
如果我完全排除该函数(并显示所有发票日期),查询就会运行,但这不是我想要的。显然我做错了什么,但是什么?
【问题讨论】:
标签: sql group-by max aggregate-functions