• 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
  • 相关阅读:
    EL表达式与JSTL
    JSP
    session
    四则运算 第二次
    第二次作业
    四则运算
    用户使用手册与测试报告
    系统设计和任务分配
    需求规格说明书和原型设计
    用户需求分析和竞品分析
  • 原文地址:https://www.cnblogs.com/MySpace/p/1601202.html
Copyright © 2020-2023  润新知