mssql我有一个数据库表如下:
列:期号 r1 r2 r3 r4 ...r200 类别
值:0103 10 4 8 9 ... 22 A我想做的是:
1、把所有的上期中r1...r200的值都加1
2、把满足条件的列的值变成0假设r2、r3满足条件,那么r2、r3的值就变成03、然后插入下一行中,插入后为:
列:期号 r1 r2 r3 r4 ...r200 类别
值:0103 10 4 8 9 ... 22 A
0104 11 0 0 10 ... 23 A向各位大虾们请教,我应该怎么用代码实现呀????急急
列:期号 r1 r2 r3 r4 ...r200 类别
值:0103 10 4 8 9 ... 22 A我想做的是:
1、把所有的上期中r1...r200的值都加1
2、把满足条件的列的值变成0假设r2、r3满足条件,那么r2、r3的值就变成03、然后插入下一行中,插入后为:
列:期号 r1 r2 r3 r4 ...r200 类别
值:0103 10 4 8 9 ... 22 A
0104 11 0 0 10 ... 23 A向各位大虾们请教,我应该怎么用代码实现呀????急急
INSERT INTO tab VALUES('0101',10,4,8,9,22,'A')
INSERT INTO tab VALUES('0102',10,11,8,9,22,'B')CREATE PROCEDURE UpdateAdd
AS
DECLARE @r VARCHAR(100)
SET @r=''
DECLARE @result VARCHAR(200)
DECLARE @i INT
SET @i=1
WHILE @i<6
BEGIN
SET @r=@r+'r'+CAST(@i AS VARCHAR(2))++'+1'+','
SET @i=@i+1
END
SELECT @result=SUBSTRING(@r,1,LEN(@r)-1)
PRINT @result
INSERT INTO tab
SELECT 期号,CAST(@result AS VARCHAR(100)) ,类别 FROM tab WHERE r2<9 AND r3 <9
EXEC UpdateAdd
表名:SDyilou
列名:期号、r1,r2,r3,r4,r5...r200
我是想用后台代码来实现插入数据
protected void Button1_Click(object sender, EventArgs e)
{
//连接语句我会写
System.Data.SqlClient.SqlConnection conn;
System.Data.SqlClient.SqlCommand cmd;
string connectionstring = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["sqli08kingdomConnectionString"].ConnectionString;
string cmdString = ??
conn = new System.Data.SqlClient.SqlConnection(connectionstring);
cmd = new System.Data.SqlClient.SqlCommand(cmdString, conn);
//我不知道怎么写插入语句
}
for(int i = 1;i <= 200; i++)
{
if(i == 3 || i ==4)
{
cmdstring = "update test2 set r"+ i +"= 0)";
}
else{
cmdstring = "update test2 set r"+ i +"=" +"r"+i+ " + 1)";
}
conn = new System.Data.SqlClient.SqlConnection(connectionstring);
cmd = new System.Data.SqlClient.SqlCommand(cmdString, conn);}
INSERT INTO tab VALUES('0101',10,4,8,9,22,'A')
--先建表,建立完成后再建立存储过程
CREATE PROCEDURE UpdateAdd
AS
DECLARE @r VARCHAR(100)
SET @r=''
DECLARE @result VARCHAR(200)
DECLARE @qihao VARCHAR(10)
SELECT @qihao=(SELECT '0'+CAST((CAST(期号 AS int)+1) AS VARCHAR(4)) FROM tab WHERE r2<9 AND r3 <9)
DECLARE @i INT
SET @i=1
WHILE @i<6
BEGIN
SET @r=@r+'r'+CAST(@i AS VARCHAR(2))++'+1'+','
SET @i=@i+1
END
SELECT @result=SUBSTRING(@r,1,LEN(@r)-1)
-- PRINT @result
INSERT INTO tab
EXEC('SELECT '+@qihao+','+@result+',类别 FROM tab WHERE r2<9 AND r3 <9')
EXEC('UPDATE tab SET r2=0,r3 =0 WHERE 期号='+@qihao)
EXEC UpdateAdd --执行存储过程
SELECT * FROM tab --查询结果
我想您是弄错了我的意图
这样吧我再说明一下(前边没有说的太清楚)
我现在需要一个方法:
pubilic void Insert(string qihao1 ,string qihao2,Arraylist zuhe)
//qihao1--上一条记录的期号,例子中的1013,qihao2--新插入记录的期号,组合--需要变成0的那些列名,如例子中的r2,r3
{}
//qihao1--上一条记录的期号,例子中的1013,qihao2--新插入记录的期号,组合--需要变成0的那些列名,如例子中的r2,r3
{}
if(i == 3 || i ==4)
{
cmdstring = "update test2 set r"+ i +"= 0)";
}
else
{
cmdstring = "update test2 set r"+ i +"=" +"r"+i+ " + 1)";
}
我终于明白啦
我这样来做的
第一步:复制全部数据到下一行insert into tabalename select * from tabalename where 期号==qihao
第二步:更新所有数据都加1
第三步:更新符合条件的数据变成0现在我想的问题是
有没有办法能直接一步通过条件判断来写插入语句呀