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