SQL 分组后 字段 拼接效果(自定义函数) ---面试题

create function GetUserNames(@userDptID int)
returns nvarchar(500)
as
begin
declare @UserID int
declare @UserNames nvarchar(300)
select @UserID = min( UserID ) from UserInfo where UserDpt=@userDptID
set @UserNames=''
while @UserID is not null
begin
    select @UserNames=@UserNames+','+UserName from UserInfo where UserID = @UserID and UserDpt=@userDptID
    select @UserID = min(UserID) from UserInfo where UserID > @UserID and UserDpt=@userDptID
end
set @UserNames=substring(@UserNames,2,len(@UserNames))
return @UserNames
end
 
--=========================
select UserDpt,max(dbo.GetUserNames(UserDpt)) as UserNames from UserInfo
group by UserDpt
 
 
--=========================
SQL 代码:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[UserInfo]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[UserInfo](
 [UserID] [int] IDENTITY(1,1) NOT NULL,
 [UserName] [varchar](50) NULL,
 [UserDpt] [int] NULL,
 [UserFlag] [varchar](50) NULL,
 [UserBorn] [datetime] NULL,
 [UserBornStr] [int] NULL,
 CONSTRAINT [PK_UserInfo] PRIMARY KEY CLUSTERED
(
 [UserID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
 
 

 

 

select UserDpt,max(dbo.getFull(UserDpt)) from UserInfo
group by UserDpt


create function getFull(@deptID int)
returns nvarchar(50)
as
begin
 declare @sql varchar(1000)
 select @sql=isnull(@sql,'') +','+UserName from UserInfo where UserDpt=@deptID
 return @sql
end

 

转载于:https://www.cnblogs.com/MySpace/archive/2009/11/11/1601202.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值