如何添加以逗号分隔的所有值在sql中分隔

时间:2012-12-08 12:42:37

标签: sql

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:-1)

尝试在汇总之前将您从分割函数返回的Items转换为INT类型:

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

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