zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    day02_05.除数与被除数
    day02_04.算算多少人
    day02_03.五个数字一行输出
    day02_02.能被3整除的个位数为6的数
    day02_01.能被3整除的数
    day05_10 作业
    day05_09 列表内置方法
    day05_08 列表讲解、切片、内置方法
    day05_07 标志位讲解
    day05_06 continue语句、while循环
  • 原文地址:https://www.cnblogs.com/MySpace/p/1601202.html
Copyright © 2011-2022 走看看