从表B

时间:2017-11-13 09:44:30

标签: sql sql-server-2008

我想用q_id table

中的每条记录更新表qcard

q_id表格字段并有5条记录

--------------- 
q_id  groupcode
----  ---------
1     A01
2     A02
3     A03
4     A05
5     A06

qcard表现在在qcard 10001-2000字段中有数据 字段循环q_id groupcode not data

qcard    loop  q_id    groupcode
-----    ----  ----    ---------
10001    
10002    
10003    
10004   
10005    
10006    
10007    
10008    
10009   
10010  

我需要更新qcard表,每个循环都有来自q_id表的所有记录(循环我设置从01,02,03,....到99)如果完成每个循环都有来自q_id表的所有记录

如果工作qcard表这个数据

-------------------------------
qcard   loop  q_id    groupcode
 -----   ----  ----    ---------
 10001   01   1      A01
 10002   01   2      A02
 10003   01   3      A03
 10004   01   4      A04
 10005   01   5      A05
 10006   02   1      A01
 10007   02   2      A02
 10008   02   3      A03
 10009   02   4      A04
 10010   02   5      A05
 ...... untill
 1xxxx   99    1     A01
 1xxxx   99    2     A02
 1xxxx   99    3     A03
 1xxxx   99    4     A04
 1xxxx   99    5     A05

1 个答案:

答案 0 :(得分:0)

试试这个答案,

CREATE TABLE #Numbers(N INT)

INSERT INTO #NUMBERS(N)
SELECT TOP 495 ROW_NUMBER() OVER(ORDER BY T1.NUMBER) AS N
FROM   MASTER..spt_values T1 
       CROSS JOIN MASTER..spt_values t2

SELECT N,CASE WHEN LEN(CAST((N+4)/5 as VARCHAR))<2 THEN '0'+CAST((N+4)/5 as VARCHAR) ELSE CAST((N+4)/5 as VARCHAR) END[Loop]
    ,CASE WHEN N%10 in(1,6) THEN 1 WHEN N%10 in(2,7) THEN 2 WHEN N%10 in(3,8) THEN 3 WHEN N%10 in(4,9) THEN 4 WHEN N%10 in(5,0) THEN 5 END q_id 
from #Numbers

UPDATE A SET A.Loop=B.Loop, AND A.q_id=B.q_id
FROM qcard A,#Numbers B
WHERE (A.qcard%10000)=B.N

UPDATE B
SET B.groupcode=A.groupcode
FROM q_id A,qcard B
WHERE A.q_id=B.q_id

DROP TABLE #Numbers