SQL查询以在列中放置数字,并在列中有新文本时放置递增的数字

问题描述

我有一个查询SELECT * from TABLE,其结果如下表所示:

enter image description here

预期的列如下:

enter image description here

我想像每当我们获得0的值那样框住一个新列,然后将数字增加1。我尝试了DENSE_RANK()ROW_NUMBER(),但无法获得所提到的确切结果。在Postgresql中有可能吗?

解决方法

尝试一下:

select name,value,sum(case when value=0 then 1 else 0 end) over (order by  "sno") 
from (
select row_number() over() as "sno",* from example
     ) tab

DEMO

注意:请注意,由于原始数据中没有订购字段,因此无法保证始终获得相同的输出。

因此,更好的方法是在视图输出中添加一些字段,通过该字段可以对其进行排序,并按如下所示运行查询:(假设您具有ID字段)

select 
  name,sum(case when value=0 then 1 else 0 end) over (order by id) 
from example

DEMO