根据传入存储过程的内容

时间:2018-04-30 18:12:44

标签: sql-server

我在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。

1 个答案:

答案 0 :(得分:1)

January = CASE WHEN @Month = 'January' THEN 0 ELSE January END