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

求sql话语(很多人都无法解决呀)

2012-09-25 
求sql语句(很多人都无法解决呀)求sql语句:以下在sql server2005上运行:create table sbjc(区域 varchar(20

求sql语句(很多人都无法解决呀)
求sql语句:
以下在sql server2005上运行:

create table sbjc
(
区域 varchar(20),
设备状况 varchar(20),
设备ip varchar(50)
)

insert into sbjc values('外科','良好','192.168.1.1');
insert into sbjc values('皮肤科','异常','192.168.1.2');
insert into sbjc values('五官科','良好','192.168.1.3');
insert into sbjc values('外科','良好','192.168.1.4');
insert into sbjc values('外科','异常','192.168.1.5');
insert into sbjc values('皮肤科','异常','192.168.1.6');
insert into sbjc values('五官科','异常','192.168.1.7');
insert into sbjc values('外科','良好','192.168.1.8');
insert into sbjc values('内科','异常','192.168.1.9');
insert into sbjc values('内科','良好','192.168.1.10');
insert into sbjc values('口腔科','异常','192.168.1.13');
insert into sbjc values('口腔科','良好','192.168.1.14');
insert into sbjc values('内科','良好','192.168.1.70');
insert into sbjc values('五官科','良好','192.168.1.71');
select * from sbjc

区域 设备状况 设备ip
--------------------------------
外科良好192.168.1.1
皮肤科异常192.168.1.2
五官科良好192.168.1.3
外科良好192.168.1.4
外科异常192.168.1.5
皮肤科异常192.168.1.6
五官科异常192.168.1.7
外科良好192.168.1.8
内科异常192.168.1.9
内科良好192.168.1.10
口腔科异常192.168.1.13
口腔科良好192.168.1.14
内科良好192.168.1.70
五官科良好192.168.1.71

问题:用SQL语或程序,按如下格式显示:


外科 皮肤科 五官科 内科 口腔科
-----------------------------------------------------
异常192.168.1.5 异常192.168.1.2异常192.168.1.7 异常192.168.1.9 异常192.168.1.13
良好192.168.1.1 异常192.168.1.6良好192.168.1.3 良好192.168.1.10良好192.168.1.14
良好192.168.1.4 良好192.168.1.71 良好192.168.1.70
良好192.168.1.8

补充一下,在显示结果的时候,需要将异常的设备IP排列在前面。



[解决办法]

SQL code
DECLARE @sql VARCHAR(max)SELECT @sql=ISNULL(@sql+',','')+QUOTENAME([区域]) FROM sbjc GROUP BY [区域]EXEC('SELECT '+@sql+' FROM (    SELECT 区域,设备状况+设备ip as 设备,rn=row_number() over(partition by 区域 order by charindex(设备状况,''良好异常'')) FROM sbjc )aPIVOT (max(设备) FOR [区域] IN('+@sql+')) b')/*口腔科    内科    皮肤科    外科    五官科良好192.168.1.14    良好192.168.1.70    异常192.168.1.2    良好192.168.1.1    良好192.168.1.3异常192.168.1.13    良好192.168.1.10    异常192.168.1.6    良好192.168.1.8    良好192.168.1.71NULL    异常192.168.1.9    NULL    良好192.168.1.4    异常192.168.1.7NULL    NULL    NULL    异常192.168.1.5    NULL*/ 

热点排行