我在SQL Server数据库中有这个存储过程:
USE [database_name]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[stored_procedure_name]
(
@Month varchar(10)
)
AS
BEGIN
SET NOCOUNT OFF
UPDATE TableName SET
January = IIF(@Month = 'January',0,'Leave it as it was')
, February = NO CHANGE etc..
WHERE 1=1
END
这是我正在使用的简化版本。我想要做的就是将程序传递一个月,然后让那个月和那个月的所有行中唯一的值更新为0(这是一个数据类型),以便剩下的月份保持不变。
此表中有一个student id列和一个year列,因此有14列。这就是我们从中获取多行的地方。因此,当我1月份通过它时,我希望每个学生都将1月份列设置为0。
答案 0 :(得分:1)
January = CASE WHEN @Month = 'January' THEN 0 ELSE January END