2017-11-15 8 views
0

パーティションなしでrow_numberを実行できますか? (郵便物の終わりのデータを見る)私はこの声明を使って注文番号を得ることができる。TSQL ROW_NUMBER()OVER(パーティションBY ... ORDER BY ....)

 ROW_NUMBER() OVER (PARTITION BY LOG_ID ORDER BY ORDER_ID) 

LOG#を取得するにはどうすればよいですか?

-LOG# ORDER# LOG_ID ORDER_ID 
-1  1  340580 387373215 
-1  2  340580 387373225 
-2  1  340925 387812330 
-3  1  340935 388093450 
-4  1  340945 387615845 
-5  1  340990 386433405 
-6  1  341675 376247120 
-6  2  341675 376247130 
-6  3  341675 388352445 
+0

「LOG#を取得する」とはどういう意味ですか? –

+0

はい - partition by節なしでrow_numberを取得できますこれは有効です: 'ROW_NUMBER()OVER(ORDER BY ORDER_ID) ) ' –

+0

' ROW_NUMBER() '式の全てに-1を掛けます。 –

答えて

1
SELECT 
    - DENSE_RANK() OVER (ORDER BY LOG_ID) AS "#LOG", 
    ROW_NUMBER() OVER (PARTITION BY LOG_ID ORDER BY ORDER_ID) AS "#ORDER", 
    LOG_ID, 
    ORDER_ID 
FROM UnnamedTable 
1
declare @yourtable table ([ORDER#] int, LOG_ID int, ORDER_ID bigint); 
insert @yourtable values 
(1,340580,387373215), 
(2,340580,387373225), 
(1,340925,387812330), 
(1,340935,388093450), 
(1,340945,387615845), 
(1,340990,386433405), 
(1,341675,376247120), 
(2,341675,376247130), 
(3,341675,388352445); 


select [-LOG#] = -dense_rank() over (order by LOG_ID), * 
from @yourtable; 

戻り

-LOG#    ORDER#  LOG_ID  ORDER_ID 
-------------------- ----------- ----------- -------------------- 
-1     1   340580  387373215 
-1     2   340580  387373225 
-2     1   340925  387812330 
-3     1   340935  388093450 
-4     1   340945  387615845 
-5     1   340990  386433405 
-6     1   341675  376247120 
-6     2   341675  376247130 
-6     3   341675  388352445 

編集:@baconビットはそれに私を打ちます。 :

関連する問題