2012-12-08 35 views
0

如何获取表中某列的值的总和。现在我想获得8和0的SUM,如果我使用下面的查询写。如何添加以逗号分隔的所有值,以sql分隔

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

这给出了一个错误

操作数的数据类型的varchar为总和操作无效。

我的代码是:

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 
+0

现在的问题是,为什么你的函数返回时,实际上它应该是一个整数一个varchar?你应该真的改变这个功能。 –

回答

-1

尝试的结果表来施放你从你的分割功能回到一个INTItems在求和之前键入:

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

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

1

是否你的方法CustomSplit返回为varchar类型的列项的表格? 如果是的话,你可以转换列:

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