分组统计问题,谢谢

jhtchina 2007-08-17 08:40:32
HY HU
1 A
2 B
1 C
3 D

需要结果:
HY HU
1 A,C
2 B
3 D
...全文
181 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhtchina 2007-08-17
  • 打赏
  • 举报
回复
OK
问题解决
加上
dbo.
jhtchina 2007-08-17
  • 打赏
  • 举报
回复
为什么不认识函数名呢?
jhtchina 2007-08-17
  • 打赏
  • 举报
回复
如下是错误提示
服务器: 消息 195,级别 15,状态 10,行 1
'fn_Merge' 不是可以识别的 函数名。
OracleRoob 2007-08-17
  • 打赏
  • 举报
回复
--道理是一样的。




create table tb(HY varchar(10),HU varchar(100))
go
insert into tb
select 1,'A' union all
select 2,'B' union all
select 1,'C' union all
select 3,'D'
go
--写一个聚合函数:
create function dbo.fn_Merge(@HY int)
returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+HU from tb where HY=@HY
return stuff(@r,1,1,'')
end
go

-- 调用函数
select HY, dbo.fn_Merge(HY) as HU from tb group by HY

go
drop table tb
drop function dbo.fn_Merge

jhtchina 2007-08-17
  • 打赏
  • 举报
回复
如下是错误提示
服务器: 消息 195,级别 15,状态 10,行 1
'fn_Merge' 不是可以识别的 函数名。
jhtchina 2007-08-17
  • 打赏
  • 举报
回复
HY HU
1 A
2 B
1 C
3 D

需要结果:
HY HU
1 A,C
2 B
3 D


这里HY 字段不是int 是nvarchar
OracleRoob 2007-08-17
  • 打赏
  • 举报
回复
以上是添加了一个自定义函数。

还可以使用游标处理。

但是使用自定义函数比较简单。
jhtchina 2007-08-17
  • 打赏
  • 举报
回复
有没有简单一些的办法?
谢谢啊
OracleRoob 2007-08-17
  • 打赏
  • 举报
回复


create table tb(HY int,HU varchar(100))
go
insert into tb
select 1,'A' union all
select 2,'B' union all
select 1,'C' union all
select 3,'D'
go
--写一个聚合函数:
create function dbo.fn_Merge(@HY int)
returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+HU from tb where HY=@HY
return stuff(@r,1,1,'')
end
go

-- 调用函数
select HY, dbo.fn_Merge(HY) as HU from tb group by HY

go
drop table tb
drop function fn_Merge

34,837

社区成员

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

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