此代码有什么问题?什么是正确的语法?sql 2008查询。我正在尝试更正此错误讯息
SELECT EmployeeID, SUM('More than 2 orders')
FROM Orders
WHERE EmployeeID >2
GROUP BY EmployeeID
Msg 8117, Level 16, State 1, Line 1
Operand data type varchar is invalid for sum operator.
此代码有什么问题?什么是正确的语法?sql 2008查询。我正在尝试更正此错误讯息
SELECT EmployeeID, SUM('More than 2 orders')
FROM Orders
WHERE EmployeeID >2
GROUP BY EmployeeID
Msg 8117, Level 16, State 1, Line 1
Operand data type varchar is invalid for sum operator.
SUM('More than 2 orders')
是没有意义的,因为错误消息要告诉你的一部分 - 你SUM
数字字段(或表达式),而不是varchar(即字符串)常量。
你到底想要做什么,用“字符串的总和”呢?
编辑:在OP中的评论澄清(OP,编辑你的问题是一个更好的主意!):
我想知道有多少员工 已经处理了至少2个数量级和TOS 员工数量如何。
要显示这员工“已经处理了至少两个数量级”,假设例如有表中的每个订单已处理记录:
SELECT EmployeeID
FROM Orders
GROUP BY EmployeeID
HAVING COUNT(*) >= 2
这并不表明正确哪命令那些雇员处理(上述澄清没有要求),也没有显示这些雇员的数量 - 如果这是要求而不是雇员的ID,
SELECT COUNT(DISTINCT EmployeeID)
FROM Orders
GROUP BY EmployeeID
HAVING COUNT(*) >= 2
如果这些猜测(或者我对Orders表的猜测)都不是您想要的,请显示该表的模式(理想情况下只是与问题相关的部分)以及您想要的输出的简单示例对于表格的简短示例内容 - 请意识到阅读您的想法(当您不提供问题的详细信息时)对我们来说不是一个有意义的练习,因此提供所有相关信息,包括您的规格和理想情况下,一个小例子是迄今为止让您的问题迅速而翔实地回答的最佳方式。
感谢您的帮助。其实,我想知道有多少员工处理了至少2个订单,并且知道员工数量。 – getbruce 2010-06-15 05:52:44
应该是这样:
SELECT EmployeeID, SUM(Column) FROM Orders WHERE EmployeeID >2 GROUP BY EmployeeID.
总和不能应用于VARCHAR包含文本。它只能应用于数值。
希望如果您尝试使用group by其所显示的错误,那么聚合函数应该在那里,因此您添加了它,尝试使用某个列具有数值。
感谢您的帮助。其实,我想知道有多少员工处理了至少2个订单,并且知道员工数量。 – getbruce 2010-06-15 05:53:29
如果我正确地翻译了您的评论,您希望每个员工拥有2个或更多订单的员工ID。以下声明为您提供:
select EmployeeID from Orders group by EmployeeID having count(EmployeeID) > 1
您想做什么? – gbn 2010-06-15 04:49:18
您需要接受所有问题的答案或者人们会停止发布答案 – 2010-06-25 05:10:46