问题
Can I do row_number without partition? (see data at end of post) I can use this statement to get an ORDER#.
ROW_NUMBER() OVER (PARTITION BY LOG_ID ORDER BY ORDER_ID)
Any suggestions to get the 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
回答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
回答2:
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;
Returns
-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
Edit: @bacon bits beat me to it. :(
来源:https://stackoverflow.com/questions/47317424/tsql-row-number-over-partition-by-order-by