我想生成每隔三行生成行號,每3行
CREATE TABLE #test(period INT)
INSERT INTO #test
VALUES (602),(603),(604),(605),(606),(607),(608),(609)
我知道我們可以用row_number
窗函數或while
環或cursor
SELECT period,
(Row_number()OVER(ORDER BY period) - 1)/3 + 1
FROM #test
結果生成序列號;
+--------+-----+
| period | seq |
+--------+-----+
| 602 | 1 |
| 603 | 1 |
| 604 | 1 |
| 605 | 2 |
| 606 | 2 |
| 607 | 2 |
| 608 | 3 |
| 609 | 3 |
+--------+-----+
是否有任何其他的方式來實現這一目標數學。不會有周期
就我個人而言,有沒有更好的方式來做到這一點。畢竟,這是ROW_NUMBER的設計目的,不是嗎?你爲什麼想要使用另一種方法? – Tyron78
爲什麼你要使用其他方法,如果這工作正常?是否有理由讓它更具數學意義? – Saypontigohe
@Saypontigohe&@ Tyron78 - 原始要求的方式比這更復雜。我在另一個窗口函數的'partition by'中使用這個序列。由於'Row_Number'查詢變得非常緩慢 –