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)和。。。