收录日期:2018/06/20 11:57:56 时间:2016/05/18 03:14:25 标签:基础类
有二个表.一是主表A.另一是副表.B  
A      中记录.    
01    主内容1    昵称1      
02    主内容2    昵称2      
03    主内容3    昵称3      
B      中记录    
01    内容1  
01    内容2  
01    内容3  
02    内容4  
02    内容5  
03    内容6  
 
我要生成的结果是  
 
01  主内容1  昵称1    内容1,内容2,内容3  
02  主内容2  昵称2    内容4,内容5  
03  主内容3  昵称3    内容6  

表:
 a     b
aa1    2002-1-2
aa1    2002-1-3
aa1    2002-1-6
aa1    2002-1-7
aa2    2002-1-8
aa2    2002-1-6
aa2    2002-1-5
aa3    2002-1-6
aa3    2002-1-5

显示为
a    b    c
aa1   4    2002-1-2,2002-1-3,2002-1-6,2002-1-7
aa2   3    2002-1-8,2002-1-6,2002-1-6
aa3   2    2002-1-6,2002-1-5

create function getstr(@a varchar(10))
returns varchar(1000)
as 
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+b from 表 where a=@a
set @str=right(@str,len(@str)-1)
return @str
end
go

-----调用:
select a,count(*) b ,dbo.getstr(a) c from 表 group by a
  
 
出自:pengdali(大力)  
高!
use Northwind
go

if exists(select name from sysobjects where name='tblA' and xtype='U')
   drop table tblA
if exists(select name from sysobjects where name='tblB' and xtype='U')
   drop table tblB
if exists(select name from sysobjects where name='selB' and xtype='FN')
   drop function selB

create table tblA(
  ID varchar(3) not null primary key,
  content varchar(10) not null,
  name varchar(10) not null
)

create table tblB(
  ID varchar(3) not null,
  hobby varchar(10) not null
)

insert tblA values('01',    '主内容1',    '昵称1')      
insert tblA values('02',    '主内容2',    '昵称2')      
insert tblA values('03',    '主内容3',    '昵称3')      

insert tblB values('01',    '内容1')
insert tblB values('01',    '内容2')
insert tblB values('01',    '内容3')
insert tblB values('02',    '内容4')
insert tblB values('02',    '内容5')
insert tblB values('03',    '内容6')

go 
create function selB(@ID varchar(3))
returns varchar(800)
as
begin
  declare @hob varchar(800)
  set @hob = ''
  select @hob = @hob + hobby +',' from tblB where ID = @ID
  set @hob = substring(@hob,1,len(@hob)-1)
  return @hob
end
go

select ID, content, name, dbo.selB(ID) from tblA order by ID
SQL7中没有FUNCTION
这样设计数据库有问题,数据多了之后查询效率比较低。
gz
我想上面是最好的解决方法了
好像还没见到过更好的方法

上面的方法已经堪称经典了


活活

收藏一下