●●●●●●请问如何用一句SQL写这个查询?●●●●●●

heyixiang 2005-03-22 11:54:57
不要什么游标、过程什么的,我想知道如何用一个查询语句得到如下结果

原始表
quesid opid content
34 22 a
34 23 b
34 24 c
35 25 d
35 26 e
35 27 f
36 28 g
36 29 h



要得到的结果:
quesid opid content
34 22,23,24 a,b,c
35 25,26,27 d,e,f
36 28,29 g,h
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2005-03-22
  • 打赏
  • 举报
回复
--建立函数

Create Function GetOpID(@quesid nvarchar(10))
returns nvarchar(1000)
as
begin
declare @s nvarchar(1000)
set @s=''
select @s=@s+','+ltrim(opid) from 表名 where quesid=@quesid
set @s=stuff(@s,1,1,'')
return(@s)
end
go

Create Function GetContent(@quesid nvarchar(10))
returns nvarchar(1000)
as
begin
declare @s nvarchar(1000)
set @s=''
select @s=@s+','+ltrim(content) from 表名 where quesid=@quesid
set @s=stuff(@s,1,1,'')
return(@s)
end
go

Select quesid,dbo.GetOpID(quesid),dbo.GetContent(quesid) from 表名 Group By quesid
jxwangjm 2005-03-22
  • 打赏
  • 举报
回复
UP
jinjazz 2005-03-22
  • 打赏
  • 举报
回复
--建立测试环境
Create Table 表(quesid varchar(10),opid varchar(10),content varchar(10))
--插入数据
insert into 表
select '34','22','a' union
select '34','23','b' union
select '34','24','c' union
select '35','25','d' union
select '35','26','e' union
select '35','27','f' union
select '36','28','g' union
select '36','29','h'
go
--测试语句
CREATE FUNCTION FunMergeCharField(@vchA varchar(10) )
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r=''
SELECT @r=@r+','+opid FROM 表 WHERE quesid=@vchA
RETURN(substring(@r,2,8000))
END
go
--删除测试环境
select quesid,dbo.FunMergeCharField(quesid) from 表 group by quesid
Drop Table 表
Drop Function FunMergeCharField
heyixiang 2005-03-22
  • 打赏
  • 举报
回复
wynbfqny 2005-03-22
  • 打赏
  • 举报
回复
建一个函数解决,(相当于SUM函数)
具体的看看论坛里的例子
wyb0026 2005-03-22
  • 打赏
  • 举报
回复
我看你的用函数要不实现不了

34,590

社区成员

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

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