收录日期:2018/12/11 02:37:38 时间: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
我想上面是最好的解决方法了
好像还没见到过更好的方法

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


活活

收藏一下

提示输入网络密码问题? 孝道(2)-为人子女不可不读 请问哪里还有CMWAP固定费用包月的卡? JAR export finished with warnings. See details for additional information. vb.net2005创建桌面快捷方式 WORD,PDF文件在IE中打开问题? 问哪里还有CMWAP固定费用包月的卡? 如何将多个.cs文件动态编译成一个DLL 并且调用这个DLL 高分求简单问题(数据库访问) 请问mltilineEdit如何实现换行 土豆网中的主键是怎么生成的?? 如:AqK4XVaSiYE ,nXDh2lsb_Tc linux下并行程序的设计和实现??? 急救!Websphere NDV5.1+DB2EEV8环境下一个郁闷的错误! c学习菜鸟入门,高手指点以下 非常感谢!!!! 菜鸟提问,散散小分,谢谢解答(1) 如何只备份数据库中的部分表? 火烧眉急需解决的问题! 这样的值怎样不同窗体传递? 求救:weblogic.servlet.jsp.JspLexer.mTOKEN(Z)V(JspLexer.java:1945) 64位下,com组件库也是从注册表的CLSID键 查询组件是否注册的吗?? HttpRuntime的属性为什么写在页面里有用,写在隐藏页就没用啊。 调用nanosleep后,系统就再也没有反应了,会是啥原因? authorware如何还原分辨率? 求教:weblogic.servlet.jsp.JspLexer.mTOKEN(Z)V(JspLexer.java:1945) windows2000下asp.net问题 关于两数据库查询记录的问题(分不够在补) 我用C写一个最简单的CGI程序,输出结果为乱码 问一个关于HIBERNATE,不知道深不深奥的问题 怎樣記錄並讀出Log動態信息 高分求助,来着有分:\"0x7c82b458\"指令引用的\"0x001d202c\"内存。该内存不能为\"written\"