Sql server 在另一列的条件下检查行号结果的行

Sql server 在另一列的条件下检查行号结果的行,sql-server,Sql Server,我有一个查询,它输出一些需要“筛选”的行 我要筛选的数据如下所示: rownum value 1 0 2 0 3 1 4 1 select count(x) from ( select row_number() over (partition by X order by y) as rownum, bla, bla from [bla bla] 我需要前两行,但仅当它们的值列中有“0”

我有一个查询,它输出一些需要“筛选”的行

我要筛选的数据如下所示:

rownum value
1       0
2       0
3       1
4       1
select count(x)    
from     
(     
    select row_number() over (partition by X order by y) as rownum, bla, bla    
    from [bla bla]    
我需要前两行,但仅当它们的值列中有“0”时才需要

查询的结构如下所示:

rownum value
1       0
2       0
3       1
4       1
select count(x)    
from     
(     
    select row_number() over (partition by X order by y) as rownum, bla, bla    
    from [bla bla]    
分组依据[bla bla] )作为温度
在哪里

/* now this is where i want the magic to happen */

temp.rownum = 1 AND temp.value = 0

AND

temp.rownum = 2 AND temp.value = 0
因此,只有当第1行和第2行的值列中有“0”时,我才需要x

如果第1行或第2行的值列中有一个“1”,我不想要它们

我基本上是按照这里的方式编写where子句的,但它返回的数据集在第1行或第2行中的值都是“1”


如何解决此问题?

给定列的单行中的值不能同时为
1
2

因此,首先,使用
(我相信这是您的意图):

或者完全简化查询:

WHERE temp.rownum <= 2 AND temp.value = 0 

到查询。

@tim我在over子句中有一个“order by”,但在post中忘记了。因此,通过“temp.rownum=”对rownum进行两次单独的“检查”不起作用?我必须在一个语句中检查它吗?@msa不是你的方式,因为你说
rownum
必须同时等于1和2…但是如果我使用“or”,那么rownum 1的值不能是1,而rownum 2的值不能是0,反之亦然/编辑:我想投票给你,但没有足够的声誉…:@msa好的,我想我现在明白了,您只想在两行的值都为0.0时返回行。我现在编写它就像简化查询一样(使用temp.rownum)