Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 在select中的值列表中调用udf_Sql Server 2005_User Defined Functions - Fatal编程技术网

Sql server 2005 在select中的值列表中调用udf

Sql server 2005 在select中的值列表中调用udf,sql-server-2005,user-defined-functions,Sql Server 2005,User Defined Functions,我有一个我正在选择的项目列表,并且还希望包含一些混合在其中的UDF值 我正在提取项目管理系统中担任各种角色的人员的姓名 如果有一个名字,我想得到它的首字母,所以我想在select to fn_项目中混合使用缩写UDF,这样它将返回名字和首字母以及边名作为结果 见以下章节: 这是我的密码: CREATE FUNCTION [dbo].[fn_ProjectStakeholders] ( @ProjectListCSV VARCHAR(8000) ) RETURNS @

我有一个我正在选择的项目列表,并且还希望包含一些混合在其中的UDF值

我正在提取项目管理系统中担任各种角色的人员的姓名

如果有一个名字,我想得到它的首字母,所以我想在select to fn_项目中混合使用缩写UDF,这样它将返回名字和首字母以及边名作为结果

见以下章节:

这是我的密码:

CREATE FUNCTION [dbo].[fn_ProjectStakeholders] 
   (  
    @ProjectListCSV VARCHAR(8000)
   ) 

RETURNS @TableOfValues TABLE 
      (
        ProjectId INT,
        ExecutiveChampion NVARCHAR(500), 
        -- Abbreviate (ExecutiveChampion) as ExecutiveChampionInit,
        BusinessOwner NVARCHAR(500),
        -- Abbreviate (BusinessOwner) as BusinessOwnerInit,
        BusinessAnalyst NVARCHAR(500),
        GeneralContractor NVARCHAR(500),
        PrimaryPM NVARCHAR(500),
        DevelopmentManager NVARCHAR(500),
        DevelopmentLead NVARCHAR(500),
        TDM NVARCHAR(500),
        PTM NVARCHAR(500)
      ) 

AS 

BEGIN

DECLARE @pList TABLE (pk INT IDENTITY(1,1),ProjectId INT)    
INSERT INTO @pList (ProjectId) SELECT Value FROM Split(',', @ProjectListCSV)    

INSERT INTO @TableOfValues
SELECT  ProjectId,  
   ISNULL([95],'n/a')  ExecutiveChampion,  
   ISNULL([96],'n/a')  BusinessOwner,  
   ISNULL([97],'n/a')  BusinessAnalyst,  
   ISNULL([100],'n/a') GeneralContractor,  
   ISNULL([101],'n/a') PrimaryPM,  
   ISNULL([102],'n/a') DevelopmentManager,  
   ISNULL([103],'n/a') DevelopmentLead,  
   ISNULL([104],'n/a') TDM,  
   ISNULL([105],'n/a') PTM  
 FROM (
        SELECT pl.ProjectId, StakeholderCID, FullName  
        FROM @pList pl  
            INNER JOIN StatusCode sc  ON 1 = 1  AND SCID IN (8, 9)  
            LEFT JOIN ProjectStakeholder ps ON pl.ProjectId = ps.ProjectId AND sc.CID = ps.StakeholderCID
        ) AS ST  
 PIVOT 
    (MAX(FullName) FOR StakeholderCID IN ([95], [96], [97], [100], [101], [102], [103], [104], [105])) AS PT  

RETURN

END



CREATE FUNCTION dbo.Abbreviate ( @InputString varchar(1000) )
RETURNS VARCHAR(100)
AS
BEGIN
    DECLARE @Index INT
    DECLARE @OutputString VARCHAR(100)

    SET @InputString = LTRIM(@InputString)
    SET @OutputString = UPPER(LEFT(@InputString, 1))
    SET @Index = CHARINDEX(' ', @InputString) + 1

    WHILE @Index > 1 
    BEGIN
        SET @OutputString = @OutputString + UPPER(SUBSTRING(@InputString, @Index, 1)) 
        SET @Index = CHARINDEX(' ', @InputString, @Index) + 1
    END
    RETURN @OutputString
END
这个答案启发了我们

因此,我的结果代码是:

select 
    --p.parentprojectid,
    pp.ProjectName as ParentProjectName,
    p.ProjectName as ProjectName,
    p.ClarityId,
    R.Name as releaseName,
    CASE WHEN PSH.GeneralContractor = 'Jeff Jablonski' THEN 'Y' ELSE 'N' END as 'GC',      
    -- cg initials
    PSH.GeneralContractor,
    dbo.Abbreviate(PSH.GeneralContractor),
    p.CaseManagerBenId,
    P.Budget,
    PSH.BusinessOwner,
    PSH.DevelopmentLead ,
    PSH.PrimaryPM,
    PSH.DevelopmentManager,
    -- SA ?!?!!?
    scs.CodeName as latestStatus
    -- 6x true/ false status for link types (with sanity check)

from project p  
    left outer join project pp on pp.projectid = p.parentprojectid
    inner join Release R on R.ReleaseID = P.ReleaseID
    LEFT OUTER JOIN ProjectStatus ps ON ps.ProjectId = p.ProjectId
                                        AND ps.LastUpdate = (SELECT MAX(LastUpdate)      
                                                             FROM ProjectStatus ips      
                                                             WHERE ips.ProjectId = p.ProjectId)      
    LEFT OUTER JOIN StatusCode scs ON scs.CID = ps.RAGStatusCID 
    Left OUTER JOIN fn_ProjectStakeholders ('25,66,97') as PSH  ON PSH.projectId = p.ProjectId

where p.projectId in (25,66,97)
select 
    --p.parentprojectid,
    pp.ProjectName as ParentProjectName,
    p.ProjectName as ProjectName,
    p.ClarityId,
    R.Name as releaseName,
    CASE WHEN PSH.GeneralContractor = 'Jeff Jablonski' THEN 'Y' ELSE 'N' END as 'GC',      
    -- cg initials
    PSH.GeneralContractor,
    dbo.Abbreviate(PSH.GeneralContractor),
    p.CaseManagerBenId,
    P.Budget,
    PSH.BusinessOwner,
    PSH.DevelopmentLead ,
    PSH.PrimaryPM,
    PSH.DevelopmentManager,
    -- SA ?!?!!?
    scs.CodeName as latestStatus
    -- 6x true/ false status for link types (with sanity check)

from project p  
    left outer join project pp on pp.projectid = p.parentprojectid
    inner join Release R on R.ReleaseID = P.ReleaseID
    LEFT OUTER JOIN ProjectStatus ps ON ps.ProjectId = p.ProjectId
                                        AND ps.LastUpdate = (SELECT MAX(LastUpdate)      
                                                             FROM ProjectStatus ips      
                                                             WHERE ips.ProjectId = p.ProjectId)      
    LEFT OUTER JOIN StatusCode scs ON scs.CID = ps.RAGStatusCID 
    Left OUTER JOIN fn_ProjectStakeholders ('25,66,97') as PSH  ON PSH.projectId = p.ProjectId

where p.projectId in (25,66,97)