我收到错误:
Column 'dbo.Saved_ORDER_IMPORT.Company' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
当我执行时:
SELECT [Order No], Company
FROM [dbo].[Saved_ORDER_IMPORT]
where [sent] = 1 and datesent between '01/01/2009' and '01/27/2012'
group by [Order No]
我是否必须更改列或查询?
答案 0 :(得分:4)
<强>描述强>:
您不能只按一列对查询进行分组,因为您选择了2。
MSDN - 通过SQL Server中一个或多个列或表达式的值将选定的一组行分组到一组摘要行中。每组返回一行。 SELECT子句列表中的聚合函数提供有关每个组的信息,而不是单个行。
我们需要更多信息,但这可能有帮助
<强>示例强>:
SELECT [Order No], Company
FROM [dbo].[Saved_ORDER_IMPORT]
WHERE [sent] = 1 AND datesent BETWEEN '01/01/2009' AND '01/27/2012'
GROUP BY [Order No], Company
更多信息:
答案 1 :(得分:0)
您必须将Company字段放在group by子句中。
答案 2 :(得分:0)
GROUP BY子句告诉SQL为列表中的每个项返回1行。在您的情况下,您希望每个订单号有一行。如果也想要公司,你需要将它包含在组中。
如果您想要的只是按订单#,公司排序,请删除该组,然后使用ORDER BY。
答案 3 :(得分:0)
也可以按公司从选择或分组中删除公司。
举个例子:
您有五个订单号和两个公司
1 - 公司1
1 - 公司2
2 - 公司1
2 - 公司2
3 - 公司1
现在您按订单编号分组,因此您有3个结果:
1
2
3
......但订单号的结果是什么?因为订单号1可以是公司1或公司2。
答案 4 :(得分:0)
您的查询返回该错误,因为您没有在select语句中使用AGGREGATE函数。在GROUP BY语句中包含[Company]字段会删除错误但是没有意义。