跳到主要內容

ROW_NUMBER() / PARTITION BY / RANK() OVER / DENSE_RANK() OVER



SELECT ROW_NUMBER() OVER
(ORDER BY account_no) as RowNumNo
, *
from account_item
--RowNumNo         seq_no                  code_no                   account_no        name
--30                15                A                5201115                其他材料
--31                16                A                5201120                投入成本
--32                17                A                5201200                工資
--33                44                D                5201303                文具印刷
--34                18                D                5201304                旅費



SELECT ROW_NUMBER() OVER
(PARTITION BY code_no ORDER BY account_no) as PartitionAutoNo
, *
from account_item
--PartitionAutoNo              seq_no        code_no                account_no        name
--15                        16          A                5201120                投入成本
--16                        17          A                5201200                工資
--17                        90          A                6789121                支架平台
--18                        80          A                8011123                承載系統
--1                        67          C                5201323                勞務費
--1                        44          D                5201303                文具印刷
--2                        18          D                5201304                旅費
--3                        47          D                5201306                郵電費
--4                        43          D                5201309                水電費



SELECT RANK() OVER
(ORDER BY account_no) as RankNo
, *
from account_item
--RankNo          seq_no               code_no                account_no        name
--38                19                D                5201311                交際費
--39                46                D                5201313                稅捐
--40                41                D                5201323                勞務費
--40                67                C                5201323                勞務費
--42                45                D                5201330                手續費



SELECT DENSE_RANK() OVER
(ORDER BY account_no) as DenseRankNo
, *
from account_item
--DenseRankNo                 seq_no                   code_no                account_no        name
--38                        19                D                5201311                交際費
--39                        46                D                5201313                稅捐
--40                        41                D                5201323                勞務費
--40                        67                C                5201323                勞務費
--41                        45                D                5201330                手續費




select * from(SELECT DENSE_RANK() OVER
(ORDER BY account_no) as DenseRankNo
, *
from account_item)temp where DenseRankNo = '40'
--DenseRankNo          seq_no                    code_no                account_no        name
--40                41                D                5201323                勞務費
--40                67                C                5201323                勞務費