【问题标题】:How to select a field when it is not in GroupBy clause如何选择不在 Group By 子句中的字段
【发布时间】:2017-03-04 21:13:16
【问题描述】:

我不想在此选择中按“BimeName.IssueDate”字段分组,我不知道该怎么做。 如果我没有在 GroupBy 子句中指定这个字段,我会得到一个错误。

消息 8120,级别 16,状态 1,第 2 行列 'BimeName.IssueDate' 是 在选择列表中无效,因为它不包含在 聚合函数或 GROUP BY 子句。

请帮帮我!

SELECT
        BimeName.IssueDate,
        sum(BimeName.Premium) as Permium,
        TypeOfInsurances.TypeOfInsurance + ' ' +
        InsuranceKinds.KindOfInsurance as KindOfInsurance,
        InsuranceAgents.NameOfInsurance,
        InsuranceAgents.Representation + ' ' +
        InsuranceAgents.AgentCode as Agent
from    
        BimeName
        Inner Join InsuranceKinds ON InsuranceKinds.Id = BimeName.KindOfInsuranceId
        Inner Join TypeOfInsurances ON TypeOfInsurances.Id = InsuranceKinds.TypeOfInsuranceId
        Inner Join InsuranceAgents ON InsuranceAgents.Id = TypeOfInsurances.InsuranceAgentId
where   
        BimeName.IssueDate BETWEEN '2010-01-01' AND '2017-01-30'
group by InsuranceAgents.Representation, InsuranceAgents.NameOfInsurance, InsuranceAgents.AgentCode  , BimeName.IssueDate  , TypeOfInsurances.TypeOfInsurance , InsuranceKinds.KindOfInsurance

【问题讨论】:

  • 我希望在其他字段中使用 group by 提交的总和溢价。谢谢
  • 那么就从你的选择子句中取出日期
  • 这里的问题是因为 Date 在我的 where 语法中。请检查我的代码!
  • 阅读错误信息:选择列表中的“BimeName.IssueDate”列无效

标签: sql-server tsql group-by aggregate-functions


【解决方案1】:

如果您像您说的那样不需要它,请从选择中省略日期字段。

SELECT
        sum(BimeName.Premium) as Permium,
        TypeOfInsurances.TypeOfInsurance + ' ' +
        InsuranceKinds.KindOfInsurance as KindOfInsurance,
        InsuranceAgents.NameOfInsurance,
        InsuranceAgents.Representation + ' ' +
        InsuranceAgents.AgentCode as Agent
from    
        BimeName
        Inner Join InsuranceKinds ON InsuranceKinds.Id = BimeName.KindOfInsuranceId
        Inner Join TypeOfInsurances ON TypeOfInsurances.Id = InsuranceKinds.TypeOfInsuranceId
        Inner Join InsuranceAgents ON InsuranceAgents.Id = TypeOfInsurances.InsuranceAgentId
where   
        BimeName.IssueDate BETWEEN '2010-01-01' AND '2017-01-30'
group by 
        InsuranceAgents.Representation, 
        InsuranceAgents.NameOfInsurance, 
        InsuranceAgents.AgentCode, 
        TypeOfInsurances.TypeOfInsurance, 
        InsuranceKinds.KindOfInsurance

您可以在 where 子句中包含不在 group by 中的字段。

【讨论】:

    【解决方案2】:

    这没有任何意义。假设它在同一组中的字段 BimeName.IssueDate 具有不同的值,那么必须为该类别选择哪个值?应该再考虑一下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      相关资源
      最近更新 更多