这段代码有什么问题?什么是正确的语法?
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.
答案 0 :(得分:1)
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表的猜测)都不是您想要的,请显示该表的架构(理想情况下只是与问题相关的部分)以及您想要的输出的简单示例该表的简短示例内容 - 请注意阅读您的想法(当您不提供问题的详细信息时)对我们来说不值得进行,因此提供所有相关信息,包括您的规格和理想情况一个小例子,是迄今为止快速和提供信息的最佳方式。
答案 1 :(得分:0)
应该是
SELECT
EmployeeID,
SUM(Col1),
SUM(Col2),
..
..
FROM
Orders
WHERE
EmployeeID > 2
GROUP BY
EmployeeID
答案 2 :(得分:0)
应该是这样的:
SELECT EmployeeID, SUM(Column) FROM Orders WHERE EmployeeID >2 GROUP BY EmployeeID.
SUM不能应用于varchar包含文本。它只能应用于数值。
希望如果您尝试使用group显示错误,则应该在聚合函数中添加它,尝试使用某些列具有数值。
答案 3 :(得分:0)
如果我正确翻译您的评论,您需要拥有2个或更多订单的每个员工的员工ID。以下声明为您提供:
select EmployeeID from Orders group by EmployeeID having count(EmployeeID) > 1