我正在使用Sql Server 2005.我有这个tableA有70列和大约5000个。我想为模拟目的创建新数据(大约200条新记录)。在70列中,我只想更改剩下的3列(TERMID,OUTLET,SNUM)的值。 E.g
TABLEA
SNO COMPANY.......TERMID........OUTLET........SNUM.....
1 ABC PP2 P1-P5 P5
1 ABC PP2 P1-P5 P4
2 ABC PP2 P1-P5 P4
1 ABC PP2 P1-P5 P3
3 ABC PP2 P1-P5 P3
所以我想保留新记录的所有值,除了将所有TERMID从PP2更改为PP3以及所有出口从P1-P5更改为P6-P8。至于SNUM,所有P5都将成为P8,P4将成为P7,P3将成为P6。含义在执行插入后,TABLEA将如下所示:
TABLEA
SNO COMPANY.......TERMID........OUTLET........SNUM.....
1 ABC PP2 P1-P5 P5
1 ABC PP2 P1-P5 P4
2 ABC PP2 P1-P5 P4
1 ABC PP2 P1-P5 P3
3 ABC PP2 P1-P5 P3
1 ABC PP3 P6-P8 P8
1 ABC PP3 P6-P8 P7
2 ABC PP3 P6-P8 P7
1 ABC PP3 P6-P8 P6
3 ABC PP3 P6-P8 P6
我不想手动执行此操作,因为200行会非常繁琐。这可能是使用SQL语句吗?
我有用子查询编写正常的插入语句,但我想这将是繁琐的,甚至可能更多写INSERT INTO TABLEA(COL1,COL2,....... COL70)VALUE(.... 。)
有什么好主意吗?
答案 0 :(得分:1)
我只是重新阅读您的回复,并意识到您正在尝试在当前表中插入记录,而不是创建新表。
怎么样:
SELECT *
INTO #NewTable
FROM TABLEA;
UPDATE #NewTable
SET TERMID = 'PP3',
OUTLET= 'P6-P8',
SNUM = CASE
WHEN SNUM = 'P5' THEN 'P8'
WHEN SNUM = 'P4' THEN 'P7'
WHEN SNUM = 'P3' THEN 'P6'
END;
INSERT INTO TABLEA
SELECT *
FROM #NewTable
很抱歉这个混乱。