2012-12-08 68 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,',')