如何根据row_num和列值之一查询记录?

时间:2016-03-28 13:31:39

标签: sql-server sequence row-number

[String(Ignore = true)] 

条件是查询记录出现在Rownum Status 1 2 2 1 3 3 4 2 5 3 6 1 的第一条记录之前,在上述情况下,预期输出将是rownum = 1和2。 如果没有status=3则显示所有内容。

我不知道从哪里开始因此目前没有发现

1 个答案:

答案 0 :(得分: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

计算字段sStatus = 3次出现的运行总计。查询返回第一次出现3值之前的所有记录。

Demo here