0

如何获取表中一列的值的总和。现在,如果我使用下面的查询写入,我想得到 8 和 0 的总和。

SELECT SUM(Items) FROM dbo.CustomSplit(@AssigneeProgress,',')

这给出了一个错误

操作数数据类型 varchar 对 sum 运算符无效。

我的代码是:

DECLARE @AssigneeProgress AS VARCHAR(100)

SELECT 
    @AssigneeProgress = STUFF((SELECT ',' + CAST(ISNULL((((TblAssignments.PlannedDuration  * 100) / 300) * TblAssignments.Progress) / 100,0) AS VARCHAR(100)) 
                               FROM TblTasks,TblAssignments 
                               WHERE TblTasks.TaskId = TblAssignments.AssignmentEntityId 
                                 AND TblAssignments.AssignmentEntity = 'Task' 
                                 AND AssignmentStatus NOT IN ('Deleted','Cancelled') 
                                 AND TblTasks.TaskId = 63 FOR XML PATH('')), 1, 1,'')

SELECT * FROM dbo.CustomSplit(@AssigneeProgress,',')

这个查询给了我表格中的结果,比如

Items
8
0
4

2 回答 2

1

您的方法 CustomSplit 是否返回具有 varchar 类型的列 Items 的表?如果是,您可以转换列:

SELECT SUM(cast(Items as int)) FROM dbo.CustomSplit(@AssigneeProgress,',')
于 2012-12-08T12:57:23.937 回答
-1

在求和之前,尝试将Items您从 split 函数返回的类型转换为类型:INT

SELECT 
    SUM(CAST(Items AS INT)) 
FROM 
    dbo.CustomSplit(@AssigneeProgress,',')

CustomSplit函数最有可能返回varchar(x)项目....

于 2012-12-08T12:56:13.047 回答