求一sql语句 或存储过程都行
表A中 有字段 A1,A2,A3,A4,A5
有两个参数 c和d
在表A中查寻如果在A2,A3,A4,A5中某一字段的值等于d就把等于d字段的前一个字段的值该为c
即 如过A5 = D 就把A4该为c
如过A4 = D 就把A3该为c
------解决方案--------------------create procedure protest
@c varchar(10)
@d varchar(10)
as
declare @i int
declare @s varchar(2000)
set @i=2
while @i <=5
begin
set @s= 'update tb set a '+cast(@i-1 as varchar)+ '= ' ' '+@c+ ' ' ' where a '+cast(@i as varchar)+ '= ' ' '+@d + ' ' ' '
exec(@s)
set @i=@i+1
end
------解决方案--------------------没想到好办法~~~
CREATE TABLE A(A1 INT,A2 INT,A3 INT,A4 INT,A5 INT)
INSERT A(A1,A2,A3,A4,A5) SELECT 1,2,3,4,5
INSERT A(A1,A2,A3,A4,A5) SELECT 1,2,3,4,8
INSERT A(A1,A2,A3,A4,A5) SELECT 1,2,3,8,5
SELECT * FROM A
GO
CREATE PROC PU_A
@C INT,
@D INT
AS
BEGIN
UPDATE A SET A1=CASE WHEN A2=@D THEN @C ELSE A1 END,
A2=CASE WHEN A3=@D THEN @C ELSE A2 END,
A3=CASE WHEN A4=@D THEN @C ELSE A3 END,
A4=CASE WHEN A5=@D THEN @C ELSE A4 END
END
GO
EXEC PU_A NULL,8
SELECT * FROM A
DROP PROC PU_A
DROP TABLE A