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

有关SQL取数据的有关问题

2012-08-16 
有关SQL取数据的问题这样一张表syxhssxhssdmssrqssmc11a1120120101手术112a2220120101手术213a3320120102

有关SQL取数据的问题
这样一张表

syxh ssxh ssdm ssrq ssmc
1 1 a11 20120101 手术1
1 2 a22 20120101 手术2 
1 3 a33 20120102 手术3
1 4 a44 20120102 手术4
1 5 a55 20120103 手术5
2 1 a11 20120101 手术1
2 2 a66 20120101 手术6
2 3 a77 20120102 手术7
2 4 a44 20120102 手术4


现在怎么才能把ssrq不同的第一个 ssrq ssmc 取出来

要求变为一下这种格式:
syxh ssrq1 ssmc1 ssrq2 ssmc2 ssrq3 ssmc3  
1 20120101 手术1 20120102 手术3 20120103 手术5
2 20120101 手术1 20120102 手术7 null null
琢磨一下午了 都没琢磨出来 

希望大家指点赐教

[解决办法]

SQL code
if object_id('[tb]') is not null drop table [tb]gocreate table [tb]([syxh] int,[ssxh] int,[ssdm] varchar(3),[ssrq] datetime,[ssmc] varchar(5))insert [tb]select 1,1,'a11','20120101','手术1' union allselect 1,2,'a22','20120101','手术2' union allselect 1,3,'a33','20120102','手术3' union allselect 1,4,'a44','20120102','手术4' union allselect 1,5,'a55','20120103','手术5' union allselect 2,1,'a11','20120101','手术1' union allselect 2,2,'a66','20120101','手术6' union allselect 2,3,'a77','20120102','手术7' union allselect 2,4,'a44','20120102','手术4'goselect * into #from tb t where not exists(select 1 from tb where syxh=t.syxh and ssrq=t.ssrq and ssxh<t.ssxh)select * from #declare @sql varchar(8000)select @sql=isnull(@sql+',','')  +'max(case when px='+ltrim(px)+' then ssrq end) as [ssrq'+ltrim(px)+'],'  +'max(case when px='+ltrim(px)+' then ssmc end) as [ssmc'+ltrim(px)+']'from(select distinct px=(select count(1) from # where syxh=a.syxh and ssxh<=a.ssxh) from # a) bexec ('select syxh,'  +@sql  +' from (select *,px=(select count(1) from # where syxh=a.syxh and ssxh<=a.ssxh) from # a) b'  +' group by syxh')/**syxh        ssrq1                   ssmc1 ssrq2                   ssmc2 ssrq3                   ssmc3----------- ----------------------- ----- ----------------------- ----- ----------------------- -----1           2012-01-01 00:00:00.000 手术1   2012-01-02 00:00:00.000 手术3   2012-01-03 00:00:00.000 手术52           2012-01-01 00:00:00.000 手术1   2012-01-02 00:00:00.000 手术7   NULL                    NULL(2 行受影响)**/ 

热点排行