如何在SQL Server 2014中调用新函数中的函数

时间:2017-11-25 15:51:44

标签: sql sql-server sql-server-2014

我创建了一个名为PV的函数,它以最低的成本向我显示v_id。现在我想调用该函数并希望SQL显示

p_name, p_description, QH associated 

使用此v_id。我的问题是我该怎么做?

我的表格和我的功能代码如下:

  • Tb1:P(p_id(pk),p_name char(60),p_description varchar(300),qh(int)
  • Tb2:vp(vp_id(pk),cost,p_id(fk),v_id(fk))
  • TB3:V(v_id(pk),v_name)

代码:

CREATE FUNCTION PV (@ptid AS INT)
RETURNS INT
AS
BEGIN
    DECLARE @vid AS INT
    DECLARE @min AS INT

    SELECT 
        ptid = VP.P_ID, @vid = VP.V_ID,
        @min = MIN(VP.COST)
    FROM 
        VPr
    GROUP BY 
        VP.P_ID, VP.V_ID
    HAVING 
        MIN(VP.COST) < 25

    RETURN @vid
END;
GO

注意:如果我执行此函数,并且我的输入ptid为9,它将返回正确的v_id。重申:我想将该函数与p_name,p_description和qh

一起调用

我是SQL函数的新手。请给我一个解释。

提前致谢!

1 个答案:

答案 0 :(得分:1)

这是否符合您的要求:

SELECT
    p_name
    , p_description
    , qh
    , v_id
FROM
    (
        SELECT
            P.p_name
            , P.p_description
            , P.qh
            , vp.v_id
            , ROW_NUMBER() OVER (ORDER BY vp.cost) R
        FROM
            P
            JOIN vp ON P.p_id = vp.p_id
        WHERE vp.v_id = dbo.PV(9) -- you may need to alter the schema from 'dbo'
    ) Q
WHERE R = 1