这样的 SQL 语句如何写?

iamfancy 2003-09-14 12:06:45
现在我有数据表 mydata,其中数据如下:
uid name text
-----------------------------------------------
1 name1 text11
1 name1 text12
1 name1 text13
2 name2 text21
2 name2 text22
3 name3 text31
4 name4 text41
... .... ...

现在我想写一个 SQL 语句,将选择出来的结果如下形式:
id name text
--------------------------------------------
1 name1 text11, text12, text13
2 name2 text21, text22
3 name3 text31
4 name4 text41
......

请问这个 SQL 语句如何写?
或者说这样的 SQL 语句能写出来吗?
后面的 text 结果目的是要把所有的字符串连接起来,中间有分隔符,在格式上有少许差异也无所谓。
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdhdy 2003-09-14
  • 打赏
  • 举报
回复
--用函数
create function test(@id int)
returns varchar(8000)
as
begin
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+text+',' from mydata where uid=@id
set @sql=left(@sql,len(@sql)-1)
return(@sql)
end

--执行
select distinct uid,name,dbo.test(uid) as asdf from mydata
OpenVMS 2003-09-14
  • 打赏
  • 举报
回复
CREATE FUNCTION sumstr(@id nvarchar(50))
RETURNS nvarchar(3000)
AS
BEGIN
declare @sumstr nvarchar(3000)
set @sumstr=''
select @sumstr=@sumstr+case when @sumstr<>'' then ',' else '' end+[text] from mydata where name=@id
return(@sumstr)
END
GO
select uid,name,dbo.sumstr(name) as [text] from mydata group by uid,name
tqqonline 2003-09-14
  • 打赏
  • 举报
回复
decarle @sql varchar(8000)
set @sql=''
select id,name,@sql=@sql+','
from mydata
group by id,name
yujohny 2003-09-14
  • 打赏
  • 举报
回复
CREATE FUNCTION GETSTR(@ID NVARCHAR(20))
RETURNS NVARCHAR(200)
AS
BEGIN
DECLARE @str NVARCHAR(200)

SET @str=''

SELECT @str = @str+text+','
FROM mydata WHERE Uid =@ID

SET @str = LEFT(@str,LEN(@str)-1)
RETURN @str
END

然后用下面语句就可以了
select uid,max(name),dbo.getstr(uid) from mydata group by uid

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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