SQL-在SSMS中创建用户定义的函数

时间:2018-10-05 08:18:18

标签: sql function ssms

我需要编写查询的帮助-我需要创建一个函数,如果我输入代码编号,它将返回特定年份的PACEESRD信息。我有一个2018年表和一个2019年表,具有相同的列名。 这是一张桌子...

+--------+---------------+----------+-----+-----+--------+
| Code   | Description   | PACEESRD | V22 | V23 |   Rx   |
+--------+---------------+----------+-----+-----+--------+
| A0103  | pneumonia     |    113   | 113 | 113 |   Null |
| A0104  | sepsis        |    40    | 40  |  40 |   Null |
| A0105  | plague        |    40    | 40  |  40 |   Yes  | 
| A021   | arthritis     |    38    | 38  |  38 |   No   |
| A207   | colitis       |   41     | 41  |  41 |  Null  |
+--------+---------------+----------+-----+-----+--------+

1 个答案:

答案 0 :(得分:0)

这是一个用户定义的函数,带有两个参数:Year和Code。然后该函数从与Year参数对应的表中返回PACEESRD值。

CREATE FUNCTION GetPACEESRD
(
    @Year int,
    @Code nvarchar(50)
)
RETURNS int
AS
BEGIN
    DECLARE @ResultVar int;
    IF (@Year = 2018)
        SELECT @ResultVar = PACEESRD FROM Table2018 WHERE Code = @Code;
    ELSE
    IF (@Year = 2019)
        SELECT @ResultVar = PACEESRD FROM Table2019 WHERE Code = @Code;
    RETURN @ResultVar;
END

您可以像这样测试功能:

select dbo.GetPACEESRD(2018, 'A0103');

请修改数据类型,以使其与表的数据类型匹配。 该函数假定代码值在每个表中都是唯一的。如果它们不是唯一的,则该功能将失败,必须对其进行修改。