--=============================================================================
create table tb(id varchar(10), value varchar(10))
insert into tb values('张三', 'aa')
insert into tb values('张三', 'bb')
insert into tb values('李四', 'aaa')
insert into tb values('李四', 'bbb')
insert into tb values('李四', 'ccc')
go
--1. 创建处理函数
CREATE FUNCTION dbo.f_strUnite(@id varchar)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @str varchar(8000)
SET @str = ''
SELECT @str = @str + ',' + value FROM tb WHERE id=@id
RETURN STUFF(@str, 1, 1, '')
END
GO
-- 调用函数
SELECt id, value = dbo.f_strUnite(id) FROM tb GROUP BY id
drop table tb
drop function dbo.f_strUnite
go
得出的结果成了
id value
李四 NULL
张三 NULL
而不是id value
张三 aa,bb
李四 aaa,bbb,ccc
create table tb(id varchar(10), value varchar(10))
insert into tb values('张三', 'aa')
insert into tb values('张三', 'bb')
insert into tb values('李四', 'aaa')
insert into tb values('李四', 'bbb')
insert into tb values('李四', 'ccc')
go
--1. 创建处理函数
CREATE FUNCTION dbo.f_strUnite(@id varchar)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @str varchar(8000)
SET @str = ''
SELECT @str = @str + ',' + value FROM tb WHERE id=@id
RETURN STUFF(@str, 1, 1, '')
END
GO
-- 调用函数
SELECt id, value = dbo.f_strUnite(id) FROM tb GROUP BY id
drop table tb
drop function dbo.f_strUnite
go
得出的结果成了
id value
李四 NULL
张三 NULL
而不是id value
张三 aa,bb
李四 aaa,bbb,ccc
解决方案 »
- 请教SQL判断某字段含有某个代码自动替换语句。
- SQL Server (MSSQLSERVER) 启动后 自动生成文件 audittrace20100802104348.trc
- 一个excel的问题
- 問一個難問題,sql server能不能指定只允許特定IP的客戶端連接?
- sqlserver能用select top 1 name into @ne from tperson order by personkey?
- SQL如何按日期判断一列值中的唯一值
- 高分求教 怎样测试一条sql 语句的正确有效
- 一个表A其中两个字段是nameid1,nameid2,都对应表B的id字段。
- ms sql server中,varchar和text类型字段对效率的影响
- 创建数据库出现问题
- SQL2005中如何合并列?
- 信息表和信息分类表的联合查询问题请教一下
(
name varchar(10),
goods varchar(10)
)
insert into tb values('张三','a')
insert into tb values('张三','b')
insert into tb values('张三','a')
insert into tb values('李四','c')
insert into tb values('李四','d')
goCREATE FUNCTION dbo.getstr(@id varchar(10))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @str varchar(8000)
SET @str = ''
SELECT @str = @str + ',' + goods FROM tb WHERE name=@id
RETURN STUFF(@str, 1, 1, '')
END
goselect name,dbo.getstr(name) as goods from tb group by name
go/*
name goods
---------- --------
李四 c,d
张三 a,b,a */
insert into tb values('张三', 'aa')
insert into tb values('张三', 'bb')
insert into tb values('李四', 'aaa')
insert into tb values('李四', 'bbb')
insert into tb values('李四', 'ccc')
go
--1. 创建处理函数
CREATE FUNCTION dbo.f_strUnite(@id varchar(10)) --注意数据类型的写法
RETURNS varchar(8000)
AS
BEGIN
DECLARE @str varchar(8000)
SET @str = ''
SELECT @str = @str + ',' + [value] FROM tb WHERE id=@id
RETURN STUFF(@str, 1, 1, '')
END
GO
-- 调用函数
SELECt id, value = dbo.f_strUnite(id) FROM tb GROUP BY id
/*
id value
---------- ----------------------------------------------------------------------
李四 aaa,bbb,ccc
张三 aa,bb(2 行受影响)*/
drop table tb
drop function dbo.f_strUnite
go
RETURNS varchar(8000)
AS
BEGIN
DECLARE @str varchar(8000)
SET @str = ''
SELECT @str = @str + ',' + goods FROM tb WHERE name=@id
RETURN STUFF(@str, 1, 1, '')
END
go