在SELECT中使用count(*)over(…)语句中的计算列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SELECT中使用count(*)over(…)语句中的计算列相关的知识,希望对你有一定的参考价值。

我在SQL Server Management Studio 2014中具有以下选择语句:

   SELECT main.car_descr
          ,vari.engineCode
          ,count(*) over(partition by vari.engineCode) as quant
    FROM dbspareparts.dbo.stock as stock

    inner join fiord.dbo.store as main on stock.[id_store]=main.[id_store]

    where quant>2

    order by quant desc

执行时,我在指令上得到“无效的列名”

where quant>2

为什么以及如何获得这项工作?

我需要使用count(*)over(...)语句,因为这只是另一个更长的查询的一部分。

谢谢!

答案
直到查询返回后,quan才被绑定为变量,因此您需要将其包装在内部查询中,然后才能对其进行过滤。

以上是关于在SELECT中使用count(*)over(…)语句中的计算列的主要内容,如果未能解决你的问题,请参考以下文章

如何在表达式中多次使用 COUNT() 实现 OVER?

SQL Server 2012 - 开窗函数

DB2 SQL Count over Union of multiple tables with different Datatype

在同一个 SQL 查询中使用 rank() 和 count()

分区函数 COUNT() OVER 可能使用 DISTINCT

Junit 测试用例 - HSQLDB count(...) over (partition ... order by ...)