2016-03-28 30 views
0
Rownum Status 
1   2 
2   1 
3   3 
4   2 
5   3 
6   1 

條件是查詢記錄status=3的第一個記錄,其在上述方案中的預期輸出將是ROWNUM = 1和2。
在這種情況下,如果沒有status=3然後顯示一切之前出現。如何查詢基於row_num和其中一個列值的記錄?

我不知道從哪裏開始,因此目前還沒有發現

回答

1

如果您正在使用SQL Server 2012+,那麼你可以使用的SUM窗口版本與ORDER BY條款:

SELECT Rownum, Status 
FROM (
    SELECT Rownum, Status, 
     SUM(CASE WHEN Status = 3 THEN 1 ELSE 0 END) 
      OVER 
      (ORDER BY Rownum) AS s 
FROM mytable) t 
WHERE t.s = 0 

計算字段s運行總數Status = 3次出現次數。查詢返回第一個值值之前的所有記錄。

Demo here

相關問題