0
我试图让此查询以某种方式输出。基本上,这是我得到的输出:无法通过分区获得正确的行号
+-------+------------+-------------+----------+--------+
| Col_A | Date | Subscr_Id | Segment | RowNum |
+-------+------------+-------------+----------+--------+
| 1 | 16/09/2008 | 5,954,766 | UNKNOWN | 1 |
| 2 | 17/09/2008 | 5,954,766 | UNKNOWN | 2 |
| 3 | 24/09/2008 | 5,954,766 | UNKNOWN | 3 |
| 4 | 25/09/2008 | 5,954,766 | UNKNOWN | 4 |
| 5 | 24/06/2009 | 5,954,766 | CONSUMER | 1 |
| 6 | 01/09/2009 | 5,954,766 | CONSUMER | 2 |
| 7 | 09/11/2009 | 5,954,766 | CONSUMER | 3 |
| 8 | 31/12/2009 | 5,954,766 | CONSUMER | 4 |
| 9 | 01/01/2010 | 5,954,766 | CONSUMER | 5 |
| 10 | 31/01/2010 | 5,954,766 | CONSUMER | 6 |
| 11 | 28/02/2010 | 5,954,766 | CONSUMER | 7 |
| 12 | 01/04/2010 | 5,954,766 | CONSUMER | 8 |
| 13 | 28/06/2010 | 5,954,766 | UNKNOWN | 5 |
| 14 | 14/11/2010 | 5,954,766 | UNKNOWN | 6 |
| 15 | 09/06/2011 | 5,954,766 | UNKNOWN | 7 |
| 16 | 22/09/2011 | 5,954,766 | UNKNOWN | 8 |
| 17 | 18/12/2012 | 5,954,766 | UNKNOWN | 9 |
| 18 | 12/02/2017 | 5,954,766 | UNKNOWN | 10 |
| 19 | 14/02/2017 | 5,954,766 | UNKNOWN | 11 |
| 20 | 20/02/2017 | 5,954,766 | UNKNOWN | 12 |
| 21 | 16/09/2008 | 208,333,201 | ? | 1 |
| 22 | 18/12/2012 | 208,333,201 | ? | 2 |
| 23 | 12/02/2017 | 208,333,201 | CONSUMER | 1 |
| 24 | 13/02/2017 | 208,333,201 | CONSUMER | 2 |
| 25 | 14/02/2017 | 208,333,201 | CONSUMER | 3 |
| 26 | 15/02/2017 | 208,333,201 | CONSUMER | 4 |
| 27 | 20/02/2017 | 208,333,201 | CONSUMER | 5 |
| 28 | 28/02/2017 | 208,333,201 | CONSUMER | 6 |
+-------+------------+-------------+----------+--------+
我基本上希望RowNum
列重置为1每当Subscr_Id
或Segment
值的变化。它几乎可以工作,但正如您在第十三行看到的那样,RowNum
从5开始,而不是重置为1。
我使用的查询如下:
ROW_NUMBER() OVER (PARTITION BY Subscr_Id, Segment ORDER BY st.Subscr_Id, st.Effective_From_Dt) AS RowNum
有没有人能够给我任何指针?