1

我正在使用 Sql Server 2005。我有这个 tableA 有 70 列和大约 5000 行。我想为模拟目的创建新数据(大约 200 条新记录)。在 70 列中,我只想更改 3 列(TERMID、OUTLET、SNUM)的值,其余的仍然存在。例如

    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 (.....)

有什么聪明的主意吗?

4

1 回答 1

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

对困惑感到抱歉。

于 2013-01-17T03:50:30.780 回答