0

テーブル内の1つの列の値の合計を取得する方法。以下のクエリ書き込みを使用する場合、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 に答える