读书人

数据库有关问题求解答

发布时间: 2013-03-04 17:22:12 作者: rapoo

数据库问题,急求解答?
本帖最后由 xdd451820664 于 2013-03-01 14:49:03 编辑 表:
id 工 姓名 收
1 81201533 燕XX null
2 81206820 丁XX null
0 81209639 朱XX null
1 81213788 X null
2 81214553 孟XX null
0 81215971 侯X null
1 81215988 梁XX null
2 81216034 XX null
0 81222073 X null
表数据转换如下:
id 工 姓名 收 id 工 姓名 收 id 工 姓名 收
1 81201533 燕XX null 2 81206820 丁XX null 0 81209639 朱XX null
1 81213788 X null 2 81214553 孟XX null 0 81215971 侯X null
1 81215988 梁XX null 2 81216034 XX null 0 81222073 XX null 如何数据集并列?
[解决办法]
如果只有简单几行就可以拼凑一下, 若行数和列数都不固定的就要用到循环



if OBJECT_ID('tempdb..#t') is not null drop table #t

select'1' as cID, N'' as cClass, '81201533' as cSN, N'燕XX' as cName,null as cSign into #t
union
select'2', N'', '81206820', N'丁XX',null
union
select'0', N'', '81209639', N'朱XX',null
union
select'1', N'', '81213788', N'X ',null
union
select'2', N'', '81214553', N'孟XX',null
union
select'0', N'', '81215971', N'侯X ',null
union
select'1', N'', '81215988', N'梁XX',null
union
select'2', N'', '81216034', N'XX',null
union
select'0', N'', '81222073', N'X ',null

-- select * from #t

if object_id('tempdb..#t2') is not null drop table #t2

select ROW_NUMBER() over (partition by cID order by cSN) cPrt, * into #t2 from #t

-- select * from #t2

select * from #t2 A
left join #t2 B on B.cPrt = A.cPrt and B.cID = 2
left join #t2 C on C.cPrt = A.cPrt and C.cID = 0
where A.cID = 1




读书人网 >SQL Server

热点推荐