group_number synch_Experimentguid course_name
0 4 语文1
0 3 计算机
0 1 物理
1 3 计算机
1 4 语文1
2 3 计算机
2 1 物理
3 3 计算机
4 1 物理
5 4 语文1需要如下结果
group_number synch_Experimentguid course_name
0 4,3,1 语文1 ,计算机,物理
1 3,4 计算机,语文1
2 3,1 计算机,物理
3 3 计算机
4 1 物理
5 4 语文1
谢谢大家帮助
0 4 语文1
0 3 计算机
0 1 物理
1 3 计算机
1 4 语文1
2 3 计算机
2 1 物理
3 3 计算机
4 1 物理
5 4 语文1需要如下结果
group_number synch_Experimentguid course_name
0 4,3,1 语文1 ,计算机,物理
1 3,4 计算机,语文1
2 3,1 计算机,物理
3 3 计算机
4 1 物理
5 4 语文1
谢谢大家帮助
a b
1 1
1 2
1 3
2 1
2 2
3 1
--如何转换成如下结果:
a b
1 1,2,3
2 1,2
3 1 create table tb
(
a int,
b int
)
insert into tb(a,b) values(1,1)
insert into tb(a,b) values(1,2)
insert into tb(a,b) values(1,3)
insert into tb(a,b) values(2,1)
insert into tb(a,b) values(2,2)
insert into tb(a,b) values(3,1)
goif object_id('pubs..f_hb') is not null
drop function f_hb
go--创建一个合并的函数
create function f_hb(@a int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(b as varchar) from tb where a = @a
set @str = right(@str , len(@str) - 1)
return(@str)
End
go--调用自定义函数得到结果:
select distinct a ,dbo.f_hb(a) as b from tbdrop table tb--结果
a b
----------- ------
1 1,2,3
2 1,2
3 1(所影响的行数为 3 行)
多个前列的合并
数据的原始状态如下:
ID PR CON OP SC
001 p c 差 6
001 p c 好 2
001 p c 一般 4
002 w e 差 8
002 w e 好 7
002 w e 一般 1
===========================
用SQL语句实现,变成如下的数据
ID PR CON OPS
001 p c 差(6),好(2),一般(4)
002 w e 差(8),好(7),一般(1)if object_id('pubs..tb') is not null
drop table tb
gocreate table tb
(
id varchar(10),
pr varchar(10),
con varchar(10),
op varchar(10),
sc int
)
insert into tb(ID,PR,CON,OP,SC) values('001', 'p', 'c', '差', 6)
insert into tb(ID,PR,CON,OP,SC) values('001', 'p', 'c', '好', 2)
insert into tb(ID,PR,CON,OP,SC) values('001', 'p', 'c', '一般', 4)
insert into tb(ID,PR,CON,OP,SC) values('002', 'w', 'e', '差', 8)
insert into tb(ID,PR,CON,OP,SC) values('002', 'w', 'e', '好', 7)
insert into tb(ID,PR,CON,OP,SC) values('002', 'w', 'e', '一般', 1)
goif object_id('pubs..test') is not null
drop table test
go
select ID,PR,CON , OPS = op + '(' + cast(sc as varchar(10)) + ')' into test from tb--创建一个合并的函数
if object_id('pubs..f_hb') is not null
drop function f_hb
go
create function f_hb(@id varchar(10),@pr varchar(10),@con varchar(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(OPS as varchar) from test where id = @id and @pr = pr and @con = con
set @str = right(@str , len(@str) - 1)
return(@str)
End
go--调用自定义函数得到结果:
select distinct id ,pr , con , dbo.f_hb(id,pr,con) as OPS from testdrop table tb
drop table test--结果
id pr con OPS
---------- ---------- ---------- -------------------
001 p c 差(6),好(2),一般(4)
002 w e 差(8),好(7),一般(1)(所影响的行数为 2 行)create table b
(col varchar(20))insert b values ('a')
insert b values ('b')
insert b values ('c')
insert b values ('d')
insert b values ('e')
declare @sql varchar(1024)
set @sql=''
select @sql=@sql+b.col+',' from (select col from b) as b
set @sql='select '''+@sql+''''
exec(@sql)
0 4 语文1
0 3 计算机
0 1 物理
1 3 计算机
1 4 语文1
2 3 计算机
2 1 物理
3 3 计算机
4 1 物理
5 4 语文1需要如下结果
group_number synch_Experimentguid course_name
0 4,3,1 语文1 ,计算机,物理
1 3,4 计算机,语文1
2 3,1 计算机,物理
3 3 计算机
4 1 物理
5 4 语文1
insert into tb values(0, 4, '语文1')
insert into tb values(0, 3, '计算机')
insert into tb values(0, 1, '物理')
insert into tb values(1, 3, '计算机')
insert into tb values(1, 4, '语文1')
insert into tb values(2, 3, '计算机')
insert into tb values(2, 1, '物理')
insert into tb values(3, 3, '计算机')
insert into tb values(4, 1, '物理')
insert into tb values(5, 4, '语文1')
go--创建一个合并的函数
create function f_hb(@group_number int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(synch_Experimentguid as varchar) from tb where group_number = @group_number
set @str = right(@str , len(@str) - 1)
return(@str)
End
go
--创建一个合并的函数
create function f_hb2(@group_number int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(course_name as varchar) from tb where group_number = @group_number
set @str = right(@str , len(@str) - 1)
return(@str)
End
go
--调用自定义函数得到结果:
select distinct group_number ,dbo.f_hb(group_number) synch_Experimentguid,dbo.f_hb2(group_number) course_name from tbdrop table tb
drop function f_hb,f_hb2
------------ -------------------- -----------
0 4,3,1 语文1,计算机,物理
1 3,4 计算机,语文1
2 3,1 计算机,物理
3 3 计算机
4 1 物理
5 4 语文1(所影响的行数为 6 行)
create table tb(group_number int,synch_Experimentguid int, course_name varchar(10))
insert into tb values(0, 4, '语文1')
insert into tb values(0, 3, '计算机')
insert into tb values(0, 1, '物理')
insert into tb values(1, 3, '计算机')
insert into tb values(1, 4, '语文1')
insert into tb values(2, 3, '计算机')
insert into tb values(2, 1, '物理')
insert into tb values(3, 3, '计算机')
insert into tb values(4, 1, '物理')
insert into tb values(5, 4, '语文1')
go
并不是他的全部数据
里面还有字段 LabGuid 和 course_newGuid
我是在查询出来下面的结果以后 进行的分组统计的select * from dbo.V_lab_SelExper
where
LabGuid='71802183-7767-4fe5-be5f-7aac012d51e1'
and
course_newGuid='e553010a-01a9-4dc2-9bea-a215f38a3fe2'
你告诉我的方法我试了 ,没有通过
有没有其他的办法?
谢谢你
where
LabGuid='71802183-7767-4fe5-be5f-7aac012d51e1'
and
course_newGuid='e553010a-01a9-4dc2-9bea-a215f38a3fe2'
产生一个表
有如下字段
roup_number synch_Experimentguid course_name LabGuid course_newGuid