【问题标题】:System Functions with Error: Not in Agg/Group By有错误的系统功能:不在 Agg/Group By 中
【发布时间】:2016-04-23 08:10:05
【问题描述】:

使用 Microsoft SQL Server 2012。

我有一个名为Loan 的表,其中包含CustomerFnameCustomerLnamePropertyAddressCityStateStateBankruptcyAttorneyNameUPBLoanDate.

为了这个问题,我必须编写一个查询来检索贷款编号、客户名字、客户姓氏、财产地址和破产律师姓名。

所有具有相同律师姓名的记录必须放在一起,然后是客户姓氏,从 Z 到 A。

这是我目前的代码:

SELECT LoanNumber, 
       CustomerFname, 
       CustomerLname, 
       PropertyAddress, 
       BankruptcyAttorneyName
FROM Loan
GROUP BY BankruptcyAttorneyName
ORDER BY CustomerLname DESC

基本上得到所有未命名为BankruptcyAttorneyName的列的错误。

在选择列表中无效,因为不包含在 agg 函数或 GROUP BY 子句。

我了解错误,但不确定如何处理。我确信有一个简单的方法,但我们将不胜感激。

【问题讨论】:

  • GROUP BY 总是(几乎)与聚合函数相结合,例如 SUMCOUNTMAX/MIN。我你不需要那些,你可能也不需要GROUP BY
  • 我想这可能是老实说。我拿出了 GROUP BY,似乎工作正常。谢谢。

标签: sql sql-server select sql-server-2012 group-by


【解决方案1】:

听起来好像您根本不需要分组 - 只需先按律师姓名排序,然后按客户姓氏排序:

SELECT     LoanNumber, 
           CustomerFname, 
           CustomerLname, 
           PropertyAddress, 
           BankruptcyAttorneyName
FROM       Loan
ORDER BY   BankruptcyAttorneyName ASC, CustomerLname DESC -- Here!

【讨论】:

  • 我基本上仍然不断收到同样的错误。 “选择列表中的“Loan.LoanNumber”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。然后错误在 CustomerFname、CustomerLname 和 PropertyAddress 中重复。
  • 没有group by 子句?不可能的。您确定您正确复制了查询吗?
  • 没关系,你是对的。我很抱歉。谢谢!
猜你喜欢
  • 1970-01-01
  • 2022-07-13
  • 2019-01-19
  • 1970-01-01
  • 2021-04-01
  • 2016-08-28
  • 1970-01-01
  • 2021-07-02
  • 2014-11-23
相关资源
最近更新 更多