不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
T-SQL同一列多行数据合并成一行
编辑:dnawo 日期:2010-05-28
复制内容到剪贴板
程序代码

--create table
create table ##Course(cid int identity(1,1) primary key,cname nvarchar(20))
--insert
insert into ##Course(cname) values('语文')
insert into ##Course(cname) values('数学')
insert into ##Course(cname) values('英语')
create table ##Course(cid int identity(1,1) primary key,cname nvarchar(20))
--insert
insert into ##Course(cname) values('语文')
insert into ##Course(cname) values('数学')
insert into ##Course(cname) values('英语')
上面是课程表结构及数据,下边我们想看下总共有多少门课程,显示格式"课程1,课程2,...",脚本如下:
复制内容到剪贴板
程序代码

declare @stus nvarchar(200)
set @stus = '' --必须,否则print没有内容
select @stus = @stus + ',' + cname from ##Course
set @stus = substring(@stus,2,len(@stus)-1)
print @stus --语文,数学,英语
set @stus = '' --必须,否则print没有内容
select @stus = @stus + ',' + cname from ##Course
set @stus = substring(@stus,2,len(@stus)-1)
print @stus --语文,数学,英语
在行转列中的应用
增加学生表及数据:
复制内容到剪贴板
程序代码

--create table
create table ##Student(sid int identity(1,1) primary key,sname nvarchar(50),cid int,score float)
--insert
insert into ##Student(sname,cid,score) values('张三',1,50)
insert into ##Student(sname,cid,score) values('张三',2,60)
insert into ##Student(sname,cid,score) values('张三',3,70)
insert into ##Student(sname,cid,score) values('李四',1,80)
insert into ##Student(sname,cid,score) values('李四',2,90)
insert into ##Student(sname,cid,score) values('李四',3,100)
create table ##Student(sid int identity(1,1) primary key,sname nvarchar(50),cid int,score float)
--insert
insert into ##Student(sname,cid,score) values('张三',1,50)
insert into ##Student(sname,cid,score) values('张三',2,60)
insert into ##Student(sname,cid,score) values('张三',3,70)
insert into ##Student(sname,cid,score) values('李四',1,80)
insert into ##Student(sname,cid,score) values('李四',2,90)
insert into ##Student(sname,cid,score) values('李四',3,100)
查询:
复制内容到剪贴板
程序代码

declare @sql nvarchar(500)
set @sql = 'select sname [学生]'
select @sql = @sql + ',max(case cid when ' + convert(varchar,cid) + ' then score else 0 end) [' + cname + ']' from ##Course
set @sql = @sql + ' from ##Student group by sname'
execute(@sql)
set @sql = 'select sname [学生]'
select @sql = @sql + ',max(case cid when ' + convert(varchar,cid) + ' then score else 0 end) [' + cname + ']' from ##Course
set @sql = @sql + ' from ##Student group by sname'
execute(@sql)
结果:

学生 语文 数学 英语
李四 80 90 100
张三 50 60 70
李四 80 90 100
张三 50 60 70
参考文章
·SQL语句定义动态列头:http://www.cnblogs.com/ajunsoft/archive/2009/03/30/1425238.html
评论: 0 | 引用: 0 | 查看次数: 7858
发表评论
请登录后再发表评论!