求一个自定义函数~~
有一张表A,是关于物品的
字段为ID(物品编号),NAME(使用该物品的人)
就是说,一个物品可以被多个人使用。
我现在需要实现的功能是输入一个物品编号,显示所有使用该物品的人。而且要把这些人放在一个字段中。
如我用select ID,NAME from A where ID=1111
结果显示为
id name
1111 张三
1111 李四
我需要个函数
用select ID,函数 as names from A where ID=1111
把结果变为
ID NAMES
1111 张三,李四
请问这个函数如何写?
问题点数:20、回复次数:13Top
1 楼lmj2003(雁不归)回复于 2004-12-04 16:56:53 得分 0
DECLARE @NAME VARCHAR(800)
SELECT @NAME=@NAME+names FROM
A where ID=1111
Top
2 楼lmj2003(雁不归)回复于 2004-12-04 16:57:49 得分 0
DECLARE @NAME VARCHAR(800)
SELECT ID,@NAME=@NAME+names FROM
A where ID=1111Top
3 楼jianciwen(纯情房东)回复于 2004-12-05 11:04:59 得分 0
不行啊~~~~Top
4 楼didoleo(冷月无声)回复于 2004-12-05 11:37:04 得分 5
大概是这样吧
create function f_str(
@id int
)returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+rtrim(XQDW)
from 表 where id =@id
return(stuff(@r,1,1,''))
end
go
Top
5 楼jianciwen(纯情房东)回复于 2004-12-05 12:09:09 得分 0
请问XQDW什么意思?
我改成NAME后,他说“在TEXT属性的CREATE……语句中指定的名称必须与NAME属性匹配,而且后面必须跟有效的TSQL语句”Top
6 楼leihefeng(风)回复于 2004-12-05 12:36:19 得分 0
都不对Top
7 楼jianciwen(纯情房东)回复于 2004-12-05 12:46:28 得分 0
didoleo() ,我把原来的删了,把你的重新复制一下后就可以了~~真奇怪,然后我改其他的东西,又出现上面那个错误。。。。。Top
8 楼gaojie0001(高洁)回复于 2004-12-05 12:55:22 得分 0
aaTop
9 楼yxiaowang(阿刀)回复于 2004-12-05 13:34:58 得分 5
CREATE FUNCTION [dbo].[test] (@id int)
RETURNS
varchar(500)
AS
BEGIN
declare @string varchar(500)
set @string=''
select @string=@string+name from A where ID=@id
return @string
ENDTop
10 楼yxiaowang(阿刀)回复于 2004-12-05 13:35:56 得分 0
select ID,test(id) as names from A where ID=1111
Top
11 楼didoleo(冷月无声)回复于 2004-12-05 18:59:59 得分 5
create function f_str(
@id int
)returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+rtrim(name)
from 表 where id =@id
return(stuff(@r,1,1,''))
end
go
Top
12 楼zh_zh_y(决不放弃)回复于 2004-12-05 23:40:01 得分 0
呵呵,来晚了, didoleo() 的方法应该可以。Top
13 楼long0104()回复于 2004-12-06 10:46:48 得分 5
这样可以
create function f_str(
@id int
)returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r=''
select @r=@r+','+names
from a where id =@id
return(stuff(@r,1,1,''))
end
go
select id,dbo.f_str(id) from a where id=1 group by idTop




