如何在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