Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 SQL函数,按参数选择特定列_Sql Server_Parameter Passing - Fatal编程技术网

Sql server SQL函数,按参数选择特定列

Sql server SQL函数,按参数选择特定列,sql-server,parameter-passing,Sql Server,Parameter Passing,我有一张这样的桌子 projectID , year , jan , feb , mar , apr , may .... 每一个代表一个数字 我想得到一个特定列上的值,它由发送给函数的值决定 我有这个功能 CREATE FUNCTION [dbo].[func_] ( @BRANCH_ID NUMERIC(6,0) = 0, @JOB_TYPE_ID NUMERIC(6,0) = 0, @PROJECT_ID NUMERIC(6,

我有一张这样的桌子

projectID , year , jan , feb , mar , apr , may ....  
每一个代表一个数字 我想得到一个特定列上的值,它由发送给函数的值决定

我有这个功能

CREATE FUNCTION [dbo].[func_] 
(   @BRANCH_ID      NUMERIC(6,0) = 0,   
    @JOB_TYPE_ID    NUMERIC(6,0) = 0,   
    @PROJECT_ID     NUMERIC(6,0) = 0,
    @MONTH_NAME     varchar(10) = 0,    
    @YEAR_NUMBER    NUMERIC(6,0) = 0)
RETURNS NUMERIC(6,1)
AS
BEGIN
    DECLARE @FORCAST NUMERIC(6,1)

    SELECT  @FORCAST =   @MONTH_NAME
    FROM    TABLE
    WHERE   Projectid = @PROJECT_ID                                 
            AND Year = @YEAR_NUMBER

    IF @FORCAST IS NULL
        RETURN(0)

    RETURN(@FORCAST)
END
例如,如果我今天执行该函数并发送今天的年份和月份,它将在“mar”列中返回值。

如果您的SQL Server版本中提供该函数,则可以使用该函数(从SQL Server 2005开始提供):

否则可能是这样的:

SELECT
  @FORCAST = CASE @MONTH_NAME
    WHEN 'January'  THEN jan
    WHEN 'February' THEN feb
    WHEN 'March'    THEN mar
    ...
  END
FROM [TABLE]
WHERE Projectid = @PROJECT_ID
  AND Year      = @YEAR_NUMBER

您能添加一些示例数据和示例函数使用情况吗?
SELECT
  @FORCAST = CASE @MONTH_NAME
    WHEN 'January'  THEN jan
    WHEN 'February' THEN feb
    WHEN 'March'    THEN mar
    ...
  END
FROM [TABLE]
WHERE Projectid = @PROJECT_ID
  AND Year      = @YEAR_NUMBER