首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求,行转换列的有关问题

2012-01-06 
求,行转换列的问题idsubpp1dc:\s1s_id542dd:\f2s_id66转换为ids_idd154c:\s266d:\f[解决办法]declare @a t

求,行转换列的问题
id sub pp
1 d c:\s
1 s_id 54
2 d d:\f
2 s_id 66

转换为
id s_id d
1 54 c:\s
2 66 d:\f

[解决办法]
declare @a table(id int, sub varchar(10), pp varchar(10))
insert @a select 1 ,'d', 'c:\s'
union all select 1 ,'s_id' ,'54' 
union all select 2 ,'d' ,'d:\f' 
union all select 2 ,'s_id' ,'66' 

select id,
min(case when sub='s_id' then pp end) s_id,
min(case when sub='d' then pp end) d 
from @a group by id

--result
/*

id s_id d
----------- ---------- ---------- 
1 54 c:\s
2 66 d:\f

(所影响的行数为 2 行)
*/
[解决办法]

SQL code
declare @t table(id int,  sub varchar(10),  pp  varchar(10)) insert @t select 1    , 'd ',     'c:\s ' union all select 1    , 's_id '  , '54 '  union all select 2    , 'd '    , 'd:\f '  union all select 2    , 's_id '  , '66 '  select  id, (select max(pp) from @t where id=t.id and isnumeric(pp)=1), (select max(pp) from @t where id=t.id and isnumeric(pp)=0) from @t tgroup  by ID--------(所影响的行数为 4 行)id                                ----------- ---------- ---------- 1           54         c:\s 2           66         d:\f (所影响的行数为 2 行) 

热点排行