更新由ID分组的Sum Case语句

时间:2018-01-15 18:04:20

标签: sql sql-server tsql

我需要创建一个update语句,它将使转换后的值相加,并根据case语句将适当的结果写入数据库。这也必须按ID分组,因为我们存储了随后计算的答案,并且必须保存适当的结果以便于分析数据。 在尝试了太多的事情后我终于放弃了,今天已经足够了。任何有良好心灵和知识的人都可以帮忙吗?

以下是我目前结束的剧本。

Update DB.sf_snew
Set answer = 
    (Case When
            sum(cast(question1 as Int)) +  sum(cast(question2 Int)) 
            + sum(cast(question3 as Int)) 
            <= 20 Then 'reject' Else 'accept' 
    End
    )
Group By Id

我无法相信一些简单的事情让我的日子变得非常糟糕。 感谢您的任何帮助。

以下是存储在snwew表中的数据示例 enter image description here

2 个答案:

答案 0 :(得分:0)

通过以下方式删除总和和组:

Update DB.sf_snew
Set answer = 
Case When
        cast(question1 as Int) +  cast(question2 Int)
        + cast(question3 as Int)
        <= 20 Then 'reject' Else 'accept' 
End

答案 1 :(得分:0)

您不需要使用聚合,只需执行以下操作:

UPDATE DB.sf_snew
SET Answer = CASE WHEN CAST(Question1 AS INT) + CAST(Question2 AS INT) + CAST(Question3 AS INT) <= 20 THEN 'Reject' ELSE 'Accept' END

UPDATE将自动逐行工作