我想应用ROW_NUMBER()
来根据特定条件增加一个计数器。SQL Server 2012:有条件地增加计数器用户ROW_NUMBER()
我的数据是这样的,与标的计数器作为Prep
列
id DSR PrepIndicator Prep
--------------------------------------
1662835 -1 1 1
1662835 14 2 2
1662835 14 2 3
1662835 20 2 4
1667321 -1 1 1
1667321 30 2 2
1667321 14 2 3
1680648 -1 1 1
1680648 14 2 2
1680648 60 1 1
1680648 14 2 2
1680648 14 2 3
1683870 -1 1 1
1683870 12 2 2
1683870 10 2 3
1683870 60 1 1
1683870 7 2 2
暂时忽略了PrepIndicator
列,我试图实现业务逻辑如下:
- 对于每个Id,从1开始,如果DSR小于42,则递增
Prep
计数器。 - 如果它是42或更大,请将Prep计数器重置为1.
的PrepIndicator
,实际上,创建一个标志,以实现这一点,因为如果PrepIndicator = 1
然后Prep = 1
。如果PrepIndicator = 2
,则增加Prep
。
如果可能,我宁愿在没有PrepIndicator
列的情况下实现此目标。
我该如何达到这个条件增量ROW_NUMBER()
?
我已经试过
ROW_NUMBER() OVER (PARTITION BY id, PrepIndicator ORDER BY id)
,但它似乎不工作时DSR
为>= 42
。
任何建议或帮助将是伟大的。谢谢!
查询需要按照一致的方式进行排序。有没有任何id/date/...列会对此有用? – 2014-09-30 04:25:42