Sql Server-保存子查询值的字段
我有以下疑问:Sql Server-保存子查询值的字段,sql,sql-server,Sql,Sql Server,我有以下疑问: select p.ID, Received = (select Rec from Exp where EstAmt = (select MAX(ex.EstAmt) from Exp ex where ex.Prot
select p.ID,
Received = (select Rec
from Exp
where EstAmt = (select MAX(ex.EstAmt)
from Exp ex
where ex.Prot = p.ID
and EstAmt > 0)
)
From Prot
where Received = 1
在上面,Received是我创建的一个字段,作为别名,它将获取Rec的值。Rec是表中的一个字段
但是当我把Received放在where子句中时,我得到了:无效的列名'Received'。如上所述,Received不是表中的字段,而是从子查询中获取值的占位符。如果where子句中的值为1,则我需要显示结果。您需要过滤原始查询的结果,将其用作子查询:
select * from
(
select p.ID,
Received = (select Rec from Exp
where EstAmt = (select MAX(ex.EstAmt) from Exp ex
where ex.Prot = p.ID and EstAmt > 0)
)
From Prot
) subsel
where Received = 1
大概是这样的:
SELECT
*
FROM
(
select
p.ID,
Received = (select Rec from Exp where EstAmt = (select MAX(ex.EstAmt) from Exp ex where ex.Prot = p.ID
and EstAmt > 0)
)
From Prot
) AS t
where
Received = 1
如果您只想选择它在1上的位置,请将整个子查询移动到where子句,并将其与1进行比较。你不需要选择它,如果你知道它是什么
(我知道这不能回答子查询上的how do you where,但它解决了您的问题。)U无法在SELECT子句中保留子查询…@NatePet我看到您在的新问题中使用了我的答案。如果这个答案对你有帮助的话,请不要忘记投票/接受它(我相信它确实有帮助,因为你在其他问题中使用了它)