2013-03-18 37 views
0

只有当第二行有特定条件时,我才需要选择row_number视图的第一行。仅当行号2的条件为x时,才选择row_number()的第一行?

现在,我该如何检查行的状态?

我可能会得到这样的观点:

row_num value 
1   1 
2   1 

但是,我只需要在第一行,如果它看起来像这样:

row_num value 
1   1 
2   2 

所以,我想我需要的是这样的:

“选择第一行,当第二行中的值为2”

如何做到这一点?

+0

你需要光标为此。 – vittore 2013-03-18 15:08:42

+1

视图中的所有列是什么?另外,当'row_number' 2 *的值不是* 2时,你想要发生什么? – AakashM 2013-03-18 15:10:12

+0

@ aakashm不,有更多的colums,但这些基本上是我需要的唯一的。另外,“价值”只能是1或0(对不起,在开头文章中输入错误),因为它的价值。 @ vittore:谨慎解释?我看了一些教程,但我不明白这可以帮助我。 – msa 2013-03-18 15:27:42

回答

0

你的问题是有点不清楚,但是这个怎么样:

SELECT 
* 
FROM 
yourView v1 
LEFT JOIN yourView v2 ON v1.row_num = v2.row_num -1 
WHERE 
MOD(v1.row_num, 2) != 0 
AND v2.value = 2 

随着MOD(v1.row_num, 2) != 0你只有在ROW_NUM是奇数行,因为我明白你的问题是这样的:

table 
----- 
type | row_num | value 
a  1   x 
b  2   y 
a  3   z 
b  4   xx 

只需要类型a的行,并且仅当相应的b行的值为2时才行。

是对不对?

+0

嗯,不,我猜。我正在计算第一行,这取决于第二行。后来我还需要计算第二和第三排。条件是第二行的值。我已经“过滤”了第一行,所以它会始终具有所需的值。这些行最终会按日期过滤。 – msa 2013-03-18 15:56:54

+0

然后我建议你提供比2行更多的示例数据,并且更清楚地解释你所追求的内容。其实我不知道... – fancyPants 2013-03-18 15:59:59

相关问题