Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按查询分组排序_Sql_Ms Access_Select_Group By_Sql Order By - Fatal编程技术网

Sql 按查询分组排序

Sql 按查询分组排序,sql,ms-access,select,group-by,sql-order-by,Sql,Ms Access,Select,Group By,Sql Order By,我试图执行一个查询以显示按供应商分组的结果(Supp\u code),然后在每个组中,结果按佣金代码(Comm\u code)排序 以下查询: sql = "SELECT [Comm_Code], [Supp_Code], [AqYear], [Product_Code], [Type], [Customer_Code], " & _ "[Commission_Rate], [cType] FROM [Acquisition Commission] GROUP BY [Sup

我试图执行一个查询以显示按供应商分组的结果(
Supp\u code
),然后在每个组中,结果按佣金代码(
Comm\u code
)排序

以下查询:

sql = "SELECT [Comm_Code], [Supp_Code], [AqYear], [Product_Code], [Type], [Customer_Code], " & _
      "[Commission_Rate], [cType] FROM [Acquisition Commission] GROUP BY [Supp_Code] " & _
      "ORDER BY [Comm_Code]"

Dim da As New OleDbDataAdapter(sql, con)

Dim ds As New DataSet
Dim dt As New System.Data.DataTable

da.Fill(ds)
给出一个错误:

您试图执行的查询未将指定的表达式“Comm_Code”作为聚合函数的一部分

我查了一下,说这是因为我在
SELECT
中包含了
Comm\u code
,而不是
groupby

所以,我把它改成:

sql = "SELECT [Comm_Code], [Supp_Code], [AqYear], [Product_Code], [Type], [Customer_Code], " & _
      "[Commission_Rate], [cType] FROM [Acquisition Commission] GROUP BY [Supp_Code] " & _
      "ORDER BY [Comm_Code]"
但是我得到了同样的错误,但是是在
AqYear
字段中

这将继续,直到我在
GROUP BY
子句中包含了所有选定的字段。。。当然,这会给我错误的输出,但即使没有,它似乎有很多不必要的查询


有没有更快/更好的方法来实现我的目标?或者我需要只在
GROUP BY
子句中包含每个查询吗?

我认为您只是在寻找一个具有两个
ORDER BY
键的非聚合查询:

SELECT [Comm_Code], [Supp_Code], [AqYear], [Product_Code], [Type], [Customer_Code], 
       [Commission_Rate], [cType]
FROM [Acquisition Commission] 
ORDER BY [Supp_Code], [Comm_Code];

使用
groupby
的查询通常具有聚合函数,例如
COUNT()
SUM()

我想您只是在寻找一个具有两个
按顺序键的非聚合查询:

SELECT [Comm_Code], [Supp_Code], [AqYear], [Product_Code], [Type], [Customer_Code], 
       [Commission_Rate], [cType]
FROM [Acquisition Commission] 
ORDER BY [Supp_Code], [Comm_Code];
使用
groupby
的查询通常具有聚合函数,如
COUNT()
SUM()

试试这样的

干杯

试试这样的


干杯

常规GROUP BY规则说:“如果指定了GROUP BY子句,则SELECT列表中的每个列引用必须标识一个分组列或是集合函数的参数。”您的语句没有进行任何分组。如果您只想将它们一起排序,请将它们添加到order by子句中。当您按支持代码分组时,每个支持代码将得到一个结果行。由于表中可能有一个供应商代码的多条记录,您希望在结果行中看到哪个供应商代码、哪个供应商年份、哪个供应商产品代码等?您需要指定它,例如MAX(Comm_Code),MIN(AqYear),…常规GROUP BY规则说:“如果指定GROUP BY子句,SELECT列表中的每个列引用必须标识一个分组列或是集合函数的参数。”您的语句没有进行任何分组。如果您只想将它们一起排序,请将它们添加到order by子句中。当您按支持代码分组时,每个支持代码将得到一个结果行。由于表中可能有一个供应商代码的多条记录,您希望在结果行中看到哪个供应商代码、哪个供应商年份、哪个供应商产品代码等?您需要指定此项,例如最大值(通信代码)、最小值(AqYear)和。。。