Oracle

根據一個月內創建單據的次數獲取 n 個單據編號

  • January 25, 2018

嗨,伙計們,這是我的桌子,我需要一個 slipno collom 的單號,該單號基於 empno 在一個月內有一個 slipno 的次數。

為了更好地解釋這裡是我的桌子

----------------------------------
SLIPNO | EMPNO    | DATE         | 
----------------------------------
123    | 0151450  | 07/OCT/17    |
234    | 0151450  | 14/OCT/17    |
345    | 0151460  | 10/OCT/17    |
456    | 0151466  | 05/OCT/17    |
567    | 0151466  | 01/OCT/17    | 
----------------------------------

需要這樣的結果

-----------------------------------------------
SLIPNO | EMPNO    | DATE         | SLIPNUMBER | 
-----------------------------------------------
123    | 0151450  | 07/OCT/17    | 1          |
234    | 0151450  | 14/OCT/17    | 2          |
345    | 0151460  | 10/OCT/17    | 1          |
456    | 0151466  | 05/OCT/17    | 1          |
567    | 0151466  | 01/OCT/17    | 2          |
-----------------------------------------------    

使用視窗函式 ROW_NUMBER()

SELECT SLIPNO, EMPNO, DT, 
ROW_NUMBER() OVER (PARTITION BY EMPNO ORDER BY DT ASC) AS SLIPNUMBER
FROM SLIPS;

DB Fiddle Test來展示一個例子。

另請注意,您不應將DATE其用作列名,因為它是保留字

引用自:https://dba.stackexchange.com/questions/196221