根据多个条件更新多个列

时间:2019-02-07 17:02:26

标签: sql database

我在下表中列出了上午和下午时段(不同时段)的一些结果。 我想根据简单的条件更新结果:

检查在接下来的2个上午课程中是否有变化-如果没有变化,则将分数加5: 示例:ID = 1,Mor2 = C,Mor3 = C,因此Score_M3 = 5 + 5 = 10(新值)。所有更新的值都标记在“需要”表中。 如何用SQL编写?我将有很多列和ID。

我的数据集:

    ID  Mor1 Aft1  Mor2  Aft2  Mor3  Aft3  Score_M1 Score_A1  Score_M2  Score_A2  Score_M3  Score_A3
    1   A    A     C     B     C     B       1        1          1         1         5        6
    2   C    C     C     B     C     B       1        1          1         1         4        5
    3   A    A     A     A     A     A       1        1          1         1         4          1

想要:

    ID  Mor1 Aft1  Mor2  Aft2  Mor3  Aft3  Score_M1 Score_A1   Score_M2  Score_A2   Score_M3   Score_A3
    1   A    A     C     B     C     B         1        1         1         1          *10        6
    2   C    C     C     B     C     B         1        1        *6         1          *9         5
    3   A    A     A     A     A     A         1        1        *6         1          *9         1

1 个答案:

答案 0 :(得分:0)

这是使您入门的SQL。您可以根据需要添加更多列。

Can we restate as SAME, rather than Change?
If Mor1 = Mor2 then add +5 to Score2
If Mor2 = Mor3 then add +5 to Score3

UPDATE [StackOver].[dbo].[UpdateMultiCols]
   SET 
       [Score_M1] = Score_M1 

      ,[Score_M2] = Score_M2 +
      Case When Mor1 = Mor2 Then 5 else 0 End 

      ,[Score_M3] = Score_M3 +
       Case When Mor2 = Mor3 Then 5 else 0 End 
GO

enter image description here