sqlServer关于group by的问题

在ASP.NET开发中,遇到需要使用GROUP BY解决的问题。GROUP BY的主要作用是对数据进行分组,若要显示字段,都需包含在GROUP BY子句中。通过复习SQL语句,了解到正确使用GROUP BY的方法。
摘要由CSDN通过智能技术生成

今天在做asp.net的时候遇到了些小问题,有个要求:

添加一个数据源控件,通过多表查询,找出销售量在前十的产品。(在SalesOrderDetail表的OrderQty字段表示订货量,希望大家先尝试自己写查询语句,实在没办法解决才去看参考答案。)


有个屁的参考答案呀!!! 只好自己写语句,在这过程中复习了很多关于sql语句的知识。
遇到最多的情况就是:
选择列表中的列 'Product.ModifiedDate' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
这个主要是对group by 的不了解。
网上找到了这样一段话:

选择列表中有形如SUM,COUNT等聚合函数,需要将所有SELECT的列加入到GROUP BY子句中去,你选择了ApprovalID列在GROUP BY子句中没有ApprovalID,所以会报错。

也就是如果要用group by,要显示的字段就都必须添加到group by 里面去。
让我们分析一下group by 的过程:

先执行select 的操作返回一个程序集,
--然后去执行分组的操作,这时候他将根据group by 后面的字段
--进行分组,并且将相同的字段并称一列数据,如果group by 后面没有这个字段的话就要分成好多的数据。
--但是分组就只能将相同的数据分成两列数据,而一列中又只能放入一个字段,所以那些没有进行分组的
--数据系统不知道将数据放入哪里,所以就出现此错误

附下午写的sql语句:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SQL ServerGroup By用于对查询结果进行分组。下面是SQL ServerGroup By的用法: 1. 概述:Group By子句用于按照指定的列对结果集进行分组,以便对每个分组应用聚合函数或获取每个分组的统计信息。 2. 原始表:首先,我们需要有一个原始表,其包含我们希望进行分组的数据。 3. 简单分组:使用Group By子句后面跟随要分组的列,可以将结果集按照指定的列进行分组。例如:SELECT column1, column2, COUNT(column3) FROM table_name GROUP BY column1, column2; 4. Group By和Order By:可以将Group By与Order By结合使用,以便对分组结果进行排序。例如:SELECT column1, column2, COUNT(column3) FROM table_name GROUP BY column1, column2 ORDER BY column1; 5. Group BySelect指定的字段限制:在Group By子句,SELECT子句的字段必须要么出现在Group By子句,要么是聚合函数。否则,会出现错误。 6. 多列分组:可以使用多个列进行分组,这样可以更细致地对数据进行分组。 7. Group By与聚合函数:通常,Group By与聚合函数一起使用,以便对每个分组应用聚合函数,并计算出相应的聚合值。 8. Having与Where的区别:Having子句用于在分组后对结果集进行过滤,而Where子句用于在分组之前对原始数据进行过滤。 9. Compute和Compute By:Compute子句用于在Group By之后对结果集进行计算,并生成新的行。Compute By子句用于指定计算的方式和顺序。 总结一下,在SQL ServerGroup By用于对结果集进行分组,并可以结合聚合函数对每个分组进行计算。通过使用Group By,我们可以对数据进行细致的分类和统计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值