sql server 2000 列转行

来源:百度知道 编辑:UC知道 时间:2024/05/03 01:11:17
Ck数据库,process_check表。要把process_check列换成行,process_check里的数据对应的
Materialid、processid、process_id都一样的时候,跟在materialid后边,新加列为TXT1……TXT10。
materialid processid process_id process_check
---A---------1---------55------------a
---A---------1---------55------------b
---A---------2---------1836----------a
---B---------1---------2825----------d
---B---------1---------2825----------k
---B---------2---------2421----------w
---B---------2---------2421----------x
---.---------- .---------- . -----------.
变成:
Materialid processid process_id TXT1 TXT2 ….TXT10
--A-----------1----------55------------a------b
--A-----------2---------1836-----------a
--B-----------1---------2825-----------d------k
--B-----------2---------2421-----------w------x
请教高手,谢谢。
呵呵,行列转换。
好像跟你说的姓名、成绩的情况不大一样吧?

select u.materialid,u.process_id,u.processid,
max(case when u.num=1 then u.process_check end) as Text1,
max(case when u.num=2 then u.process_check end) as Text2,
max(case when u.num=3 then u.process_check end) as Text3,
max(case when u.num=4 then u.process_check end) as Text4,
max(case when u.num=5 then u.process_check end) as Text5,
max(case when u.num=6 then u.process_check end) as Text6,
max(case when u.num=7 then u.process_check end) as Text7,
max(case when u.num=8 then u.process_check end) as Text8,
max(case when u.num=9 then u.process_check end) as Text9,
max(case when u.num=10 then u.process_check end) as Text10

from (select t.*,num=(select COUNT(*)
from tabletest tt
where tt.materialid=t.materialid
and tt.process_id=t.process_id
and tt.proc