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

如何在SQL Server 2014中的新函数中调用函数,sql,sql-server,sql-server-2014,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)、成本、p_id(fk)、v_id(fk)) TB3:V(V_id(pk),V_名称)

我创建了一个名为
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)、成本、p_id(fk)、v_id(fk))
  • TB3:V(V_id(pk),V_名称)
代码:

创建函数PV(@ptid为INT)
返回整数
像
开始
将@vid声明为INT
将@min声明为INT
选择
ptid=VP.P\U ID,@vid=VP.V\U ID,
@最小值=最小值(副总裁成本)
从…起
VPr
分组
副总裁,副总裁
有
最低(副总裁成本)<25
返回@vid
终止
去
注意:如果我执行此函数,并将ptid输入为9,它将返回正确的
v_id
。再次重申:我想调用该函数以及p_名称、p_描述和qh

我不熟悉SQL函数。请给我一个解释


提前感谢!

这是否符合您的要求:

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

请详细说明“您可能需要将模式从'dbo'更改为'如果函数存储在不同的模式中,例如,而不是
DatabaseName.dbo.PV
,那么它可能是
DatabaseName.Functionality.PV
,或者类似的东西,在这种情况下,您应该指定
Functionality.PV
。谢谢!我已经尝试了上面的代码。但是上面的代码不是显示一个v_id结果,而是显示两个v_id结果。我在两个不同的p_名称中插入了一个v_id。关于如何解决这个问题,有什么建议吗?这确实是一个您希望应用的逻辑问题-您希望显示两行中的哪一行以及为什么?我想显示第二行,因为第二行的vp.cost最低。目前SQL正在显示我的vp.cost最高和最低
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