使用什么方法可以将下面 mcode相同的custno 写入到另一个表的不同的字段中
使用什么方法可以将下面 mcode相同的custno 写入到另一个表的不同的字段中 例如
mcode 1 2 3 4 5 6
1501050860000 J057 J1336 J1642 J1881 L0001 L0001
id mcode custno
11501050860000 J057
21501050860000 J1336
31501050860000 J1642
41501050860000 J1881
51501050860000 L0001
61501050860000 L0001
71501050860100 J057
81501050860200 J057
91501050860300 J1881
101501050864000 J1881
111501050864000 J1882
121501050864000 J704
131501050864000 J742
141501050864000 J1870
151501050864000 J1797
161501050864000 J1642
171501050864000 J1635
181501050864000 J1635
191501050864000 J1650
201501050864000 J1650
211501050864000 J1498
221501050864000 J1635
231501050864000 J1404
241501050864000 J144
251501050864000 J144
261501050864000 J057
271501050864000 J076
281501050864000 J1336
291501050864000 J1263
[解决办法]
insert into 另一个表
select mcode,max(case when (id-1)%6=0 then custno end),
max(case when (id-1)%6=1 then custno end),
max(case when (id-1)%6=2 then custno end),
max(case when (id-1)%6=3 then custno end),
max(case when (id-1)%6=4 then custno end),
max(case when (id-1)%6=5 then custno end)
from 一个表
group by mcode,(id-1)/6
[解决办法]
insert into 另一个表 select mcode,max(case when (id-1)%6=0 then custno end), max(case when (id-1)%6=1 then custno end), max(case when (id-1)%6=2 then custno end), max(case when (id-1)%6=3 then custno end), max(case when (id-1)%6=4 then custno end), max(case when (id-1)%6=5 then custno end)from 一个表group by mcode,(id-1)%6 --这有点笔误
[解决办法]
是不是这个意思:
CREATE TABLE t1( id INT, mcode VARCHAR(20), custno VARCHAR(10))INSERT INTO t1SELECT 1, '1501050860000', 'J057' UNION ALLSELECT 2, '1501050860000', 'J1336' UNION ALLSELECT 3, '1501050860000', 'J1642' UNION ALLSELECT 4, '1501050860000', 'J1881' UNION ALLSELECT 5, '1501050860000', 'L0001' UNION ALLSELECT 6, '1501050860000', 'L0001' UNION ALLSELECT 7, '1501050860100', 'J057' UNION ALLSELECT 8, '1501050860200', 'J057' UNION ALLSELECT 9, '1501050860300', 'J1881'SELECT * FROM t1DECLARE @sql VARCHAR(8000)SET @sql='select mcode'SELECT @sql=@sql+',max(case when id='+LTRIM(id)+' then custno else null end) as ['+LTRIM(id)+']'FROM (SELECT DISTINCT id FROM t1) AS aSET @sql=@sql+' from t1 group by mcode'PRINT @sqlEXEC (@sql)mcode 1 2 3 4 5 6 7 8 91501050860000 J057 J1336 J1642 J1881 L0001 L0001 NULL NULL NULL1501050860100 NULL NULL NULL NULL NULL NULL J057 NULL NULL1501050860200 NULL NULL NULL NULL NULL NULL NULL J057 NULL1501050860300 NULL NULL NULL NULL NULL NULL NULL NULL J1881
[解决办法]
怎么看都像是做报表,怎么搞这么复杂,如果mcode有一万个,难道写一万个字段?