求一个SQL语句

newmcz 2003-09-02 09:44:15
有一个表
COL1 COL2
5770 35
5770 36
5770 37
5770 40
5770 41

求一个SQL语句得出
COL1 COL2
5770 35,36,37,40,41

谢谢!
...全文
60 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
txlicenhe 2003-09-02
  • 打赏
  • 举报
回复
--1.创建一个合并的函数
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+cast(col2 as varchar) from 表A where col1=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
go

--调用自定义函数得到结果
select distinct col1,dbo.fmerg(col1) from 表A
newmcz 2003-09-02
  • 打赏
  • 举报
回复
up
yujohny 2003-09-02
  • 打赏
  • 举报
回复
先建一个函数

CREATE FUNCTION getallstr(@aa NVARCHAR(4))
RETURNS NVARCHAR(200)
AS
BEGIN
DECLARE @str NVARCHAR(200)
SET @str =''

SELECT @str =@str+COL2+',' FROM 表 WHERE COL1 =@aa

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

RETURN @str
END

然后调用 select col1,dbo.getallstr(col1) FROM 表 Where col1 ='5770'
yujohny 2003-09-02
  • 打赏
  • 举报
回复
CREATE FUNCTION getallstr(@aa NVARCHAR(4))
RETURNS NVARCHAR(200)
AS
先建一个函数
BEGIN
DECLARE @str NVARCHAR(200)
SET @str =''

SELECT @str =@str+COL2+',' FROM 表 WHERE COL1 =@aa

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

RETURN @str
END

然后调用 select col1,dbo.getallstr(col1) FROM 表 Where col1 ='5770'
aierong 2003-09-02
  • 打赏
  • 举报
回复
DECLARE @aa TABLE(col1 INT,col2 int)
INSERT @aa VALUES(5770,35)
INSERT @aa VALUES(5770,36)
INSERT @aa VALUES(5770,37)
INSERT @aa VALUES(5770,40)
INSERT @aa VALUES(5770,41)

declare @cl int
declare @sql varchar(100)
select @sql=''
declare cur cursor for select col2 from @aa
open cur
FETCH FROM cur INTO @cl
WHILE @@FETCH_STATUS = 0
begin
select @sql=@sql+','+cast(@cl as varchar(100))
FETCH FROM cur INTO @cl
end
select @sql=right(@sql,len(@sql)-1)
print @sql

select distinct col1,col2=@sql from @aa
aierong 2003-09-02
  • 打赏
  • 举报
回复
1

34,590

社区成员

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

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