【问题标题】:I am getting an Aggregate Function/Group by Error from a column name in a join function我从连接函数中的列名中获取聚合函数/错误分组
【发布时间】:2019-05-03 17:05:30
【问题描述】:

收到错误“列 'entityotherarrangements.custfrmdataid' 在选择列表中无效,因为它不包含在聚合函数或 group by 子句中”。我遇到困难的地方是此列是联接语句的一部分

这就是我所拥有的

Declare @FromDate nvarchar(50), @ToDate nvarchar(50);
Set @FromDate = '20180905'
SET @ToDate = '20180917'
SELECT
arrangements.[Description] AS 'invitename',
count(entityotherarrangements.[Type]) as 'passcount',
(Select ISNULL(FullName,'') FROM Entity Where EntityId=
   (SELECT top 1 entityidvalue
      From CustomFormFields
      WHERE CustomFormFields.FieldId = 504
      AND CustomFormFields.CustFrmDataId = Entityotherarrangements.CustFrmDataId 
    )
) AS 'filmcoordinator'
FROM entityotherarrangements
LEFT JOIN customformdata 
  ON entityotherarrangements.CustFrmDataId = customformdata.CustFrmDataId
LEFT join arrangements 
  ON Entityotherarrangements.ArrangementNumber = arrangements.Number_SQL
WHERE CustomFormData.CustFrmDefinitionId = 17 
  AND arrangements.Type_Number = 71 
  AND CONVERT(varchar,arrangements.Date_First_Event,112)
  BETWEEN @fromDate and @ToDate
Group by arrangements.description

预期输出

invitename  passcount   filmcoordinator                                                
Green       3           John Doe   
Blue        5           John Doe  
Purple      8           Helen Buck  
Black       4           Helen Buck

【问题讨论】:

    标签: sql


    【解决方案1】:

    如果您使用聚合函数(如 count),则任何其他未聚合的字段都必须在 group by 中。所以你有3个选择:

    1. 也将您的子查询放入 group by(虽然我不知道这是否可行,因为我不会以这种方式编写查询,但它可以)。
    2. 围绕子查询执行聚合表达式。
    3. 不要在选择子句中使用子查询。而是将所有表、子查询等放在 FROM 中。这将是最干净的,并且可以避免您将来遇到其他问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 2012-03-10
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      相关资源
      最近更新 更多