在线求一个SQL语句

darkmoon 2003-10-23 01:55:26
形如
表A
ID NAME
1 a
2 b
3 c
4 d
表B
ID VALUE
1 x
1 y
2 x
2 z
3 x

如何用一句SQL 语句得到结果
ID Name VALUE
1 a x,y
2 b x,z
3 c x

注意是一个SQL语句,不要存储过程 OR 临时表,在线等
...全文
30 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
darkmoon 2003-10-23
  • 打赏
  • 举报
回复
忘了说一句,有知道一句SQL能得到结果或者MASTER有什么存储过程能实现这个功能的另开帖给分
darkmoon 2003-10-23
  • 打赏
  • 举报
回复
晕,大家方法都差不多,意思就是必须用中间函数了?没有可能一个SQL语句直接得到结果?
lynx1111 2003-10-23
  • 打赏
  • 举报
回复
先创建一个合并的函数再连接查询
CrazyFor 2003-10-23
  • 打赏
  • 举报
回复
--1.创建一个合并的函数
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+value from 表B where id=@id
if len(@str)>0 ---修正一点
set @str=right(@str,len(@str)-1)

return(@str)
End
go

--调用自定义函数得到结果
select distinct b.id,a.name,dbo.fmerg(b.id) from 表A a
join 表B b on a.id = b.id
pengdali 2003-10-23
  • 打赏
  • 举报
回复
create function getstr(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+value from 表B where id=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
go




--调用自定义函数得到结果
select *,dbo.getstr(id) value from 表A
txlicenhe 2003-10-23
  • 打赏
  • 举报
回复


--1.创建一个合并的函数
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+value from 表B where id=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
go

--调用自定义函数得到结果
select distinct b.id,a.name,dbo.fmerg(b.id) from 表A a
join 表B b on a.id = b.id

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧