【问题标题】:Group function not working on SQL server组功能在 SQL Server 上不起作用
【发布时间】:2023-04-04 00:46:01
【问题描述】:

我使用下面的查询,但它显示了一些重复的项目。所以我使用了group这个函数,但是它不起作用。

SELECT p.productId, p.productName, p.catId, p.subCatId, p.productType,
       p.modelNo, p.picUrl, p.color, p.theme, p.productPrice, p.discountedPrice,
       p.quantity, p.details, p.mainPageDisplay, p.productPageDisplay,
       s.subCatId AS Expr1,
       s.subCatName, s.catId AS Expr2,
       s.rank, s.subCatName AS Expr3
FROM (products p INNER JOIN
      subCategories s ON p.catId = s.catId)
WHERE (p.color = 'red') group By p.productName

这个查询工作正常,但是当我添加group by 时它就不能工作了。

【问题讨论】:

  • 使用 ORDER BY 子句 GROUP BY FOR FUNCITONS MIN MAX 等
  • group by 仅适用于聚合函数或由其分组的列..
  • 当您使用 GROUP BY 时,所有列都需要在 GROUP BY 中或包含在聚合中 - 因此您需要告诉我们/SQL Server 您希望对每个列执行的操作不是productName - 我们应该为每一列取MAX()MIN() 值吗?
  • 你能举个重复项目的例子吗?
  • 所以,正如我在第一条评论中所说 - 您需要告诉我们如何为每个 不是 productName 的列选择适当的值。您需要定义一个聚合,或者,如果您想说“我想要第一行/最后一行的值”,您需要告诉我们使用什么顺序来定义第一行或最后一行。

标签: sql sql-server group-by


【解决方案1】:

您不需要GROUP BY 来选择不同的行,您需要DISTINCT

SELECT DISTINCT p.productId, p.productName, p.catId, p.subCatId, p.productType,
       p.modelNo, p.picUrl, p.color, p.theme, p.productPrice, p.discountedPrice,
       p.quantity, p.details, p.mainPageDisplay, p.productPageDisplay,
       s.subCatId AS Expr1,
       s.subCatName, s.catId AS Expr2,
       s.rank, s.subCatName AS Expr3
FROM (products p INNER JOIN
      subCategories s ON p.catId = s.catId)
WHERE (p.color = 'red')

【讨论】:

  • 这意味着您想要不同的产品,以及关于子类别的东西,即分组。向我们展示您的数据,以及您想要什么。
  • 这些是列值重复 3 次 24 KINGSTON(四件套)2 13
【解决方案2】:

您的SELECT 语句不包含任何aggregate functions,因此GROUP BY 语句不合适。

【讨论】:

  • 是的,这是错误的,但我也使用 DISTINCT,但显示相同的结果
【解决方案3】:

您需要在 GROUP BY 子句中使用 SELECT 子句中的所有列,或者在 SELECT 关键字之后使用 DISTINCT 关键字。

【讨论】:

    【解决方案4】:

    SQL GROUP BY 将列值聚合(合并和计算)为单个记录值。 GROUP BY 需要在其上运行计算的表列列表。

    这个link有一个例子来帮助你理解这个概念。

    【讨论】:

      猜你喜欢
      • 2020-09-17
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 2021-05-14
      • 2021-10-10
      • 1970-01-01
      相关资源
      最近更新 更多