我想从查询中选择最上面的x值,其中特定字段的有效值平均值大于10。为什么这会引发错误?
SELECT TOP 5 *
FROM Table A
WHERE AVG(X1.parm) from (VALUES (A.F1),(A.F2),(A.F3)) as X1(parm) where X1.parm >0 and X1.parm is not NULL) > 10
您的代码抛出错误,因为它avg()
是一个聚合函数,不能在where
子句中。
您似乎想要的是apply
:
SELECT TOP 5 *
FROM Table A CROSS APPLY
(SELECT AVG(X1.parm) as avg_parm
FROM (VALUES (A.F1), (A.F2), (A.F3)) X1(parm)
WHERE X1.parm > 0
) a
WHERE avg_parm > 10;
子查询计算平均值。可以在子句中使用该计算WHERE
。
请注意,与之比较NULL
是不必要的,因为会>
滤除NULL
值。
同样,这将返回平均值。如果您不希望结果中包含平均值,则选择A.*
而不是*
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句