--创建用户函数
CREATE function fn_GetDeptList( @User_ID nvarchar(50))
RETURNS nvarchar(100)
AS
begin
declare @str nvarchar(80)
set @str=''
select @str=@str + ',' + dept from tableA where User_ID = @User_ID
set @str=substring(@str,2,len(@str) -1)
RETURN (@str)
end
select User_ID ,User_Name,dbo.fn_getdeptlist(User_ID )
from tableA
group by User_ID ,User_Name
CREATE function fn_GetDeptList( @User_ID nvarchar(50))
RETURNS nvarchar(100)
AS
begin
declare @str nvarchar(80)
set @str=''
select @str=@str + ',' + dept from tableA where User_ID = @User_ID
set @str=substring(@str,2,len(@str) -1)
RETURN (@str)
end
select User_ID ,User_Name,dbo.fn_getdeptlist(User_ID )
from tableA
group by User_ID ,User_Name
解决方案 »
- 如何将MSSQL中的数据导入到ORACLE 中,并且效率要比较高呢?
- access的新建字段的问题
- 关于sql server 2005的索引和缓存
- 分组统计SQL?
- 有办法不安装SQL SERVER环境,而能运行SQL SERVER数据库?
- 求一SQL,小弟实在搞不定了
- SQL语句,高手请进
- 安装SQL Server 2005 / 2008 的时候出现问题?
- sql语句的问题
- 想让结果集为:如果查询的结果为空则返回-1;非空则返回结果集;请各位达人路过帮帮忙!!!
- 怎么用触发器实现,当修改库A中表a的一条记录时,如何将库B中表b的相应内容也修改掉,这两个库有cid作关联
- 大虾帮忙~~~求一条多表查询的SQL语句。
CREATE function fn_GetDeptList( @User_ID nvarchar(50))
RETURNS nvarchar(100)
AS
begin
declare @str nvarchar(80)
set @str=''
select @str=@str + ',' + User_Sort from tableA where User_ID = @User_ID
set @str=substring(@str,2,len(@str) -1)
RETURN (@str)
end--执行查询
select User_ID ,User_Name,dbo.fn_getdeptlist(User_ID ) as User_Sort
from tableA
group by User_ID ,User_Name
create table 表([User_ID] varchar(10),[User_Name] varchar(10),[User_Sort] varchar(10))
insert 表 select 'majun','马俊','建银物业'
union all select 'majun','马俊','综合部'
union all select 'majun','马俊','工程部'
union all select 'majun','马马','综合部'
union all select 'majun','马马','工程部'
go--处理函数
create function f_str(@User_ID varchar(10),@User_Name varchar(10))
returns varchar(8000)
as
begin
declare @s varchar(8000)
set @s=''
select @s=@s+','+[User_Sort] from 表
where [User_ID]=@User_ID and [User_Name]=@User_Name
return(stuff(@s,1,1,''))
end
go--调用函数实现查询
select [User_ID],[User_Name],[User_Sort]=dbo.f_str([User_ID],[User_Name]) from 表
group by [User_ID],[User_Name]
go--删除测试
drop table 表
drop function f_str/*--结果User_ID User_Name User_Sort
---------- ---------- ------------------------
majun 马俊 建银物业,综合部,工程部
majun 马马 综合部,工程部(所影响的行数为 2 行)
--*/
Create table TEST(User_ID Varchar(10),User_Name Nvarchar(10),User_Sort Nvarchar(10))
Insert TEST Select 'majun',N'马俊',N'建银物业'
Union all Select 'majun',N'马俊',N'综合部'
Union all Select 'majun',N'马俊',N'工程部'
Union all Select 'majun',N'马马',N'建银物业'
Union all Select 'majun',N'马马',N'综合部'
Union all Select 'majun',N'马马',N'工程部'
GO--建立函数
Create Function GetUser_Sort(@User_ID varchar(10),@User_Name Nvarchar(10))
Returns Nvarchar(4000)
As
Begin
Declare @s Nvarchar(4000)
Set @s=''
Select @s=@s+','+User_Sort from TEST Where User_ID=@User_ID and User_Name=@User_Name
Return(stuff(@s,1,1,''))
End
GO--测试
Select User_ID,User_Name,User_Sort=dbo.GetUser_Sort(User_ID,User_Name)
from TEST
Group By User_ID,User_Name
GO--删除测试
Drop table TEST
Drop Function GetUser_Sort--结果
/*
User_ID User_Name User_Sort
majun 马俊 建银物业,综合部,工程部
majun 马马 建银物业,综合部,工程部
*/
User_ID User_Name User_Sort
majun 马俊 建银物业,综合部,工程部
majun 马马 建银物业,综合部,工程部