我在下表中列出了上午和下午时段(不同时段)的一些结果。 我想根据简单的条件更新结果:
检查在接下来的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
答案 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