Mad*_*lin 3 sql sql-server row-number sql-order-by partition
由于我的 DBMS 不允许在 order by 子句中使用“Nulls Last”,因此我需要以下方面的帮助。
row_number() over(Partition by a.ID order by a.Date asc
我需要我的行有一个按日期升序排列的 ID 的行号序列,但空日期行在我的序列中是最后一个。显然,如果我可以按我的顺序说“NULLS LAST”就好了,但是,我的 dbms (MSSQL) 不允许这样做。
例如目前正在发生的事情:
ID Date ROW_NUMBER
1 NULL 1
1 1/2/17 2
1 1/3/17 3
2 NULL 1
2 2/2/17 2
2 2/3/17 3
2 2/4/17 4
Run Code Online (Sandbox Code Playgroud)
我想要发生的事情:
ID Date ROW_NUMBER
1 1/2/17 1
1 1/3/17 2
1 NULL 3
2 2/2/17 1
2 2/3/17 2
2 2/4/17 3
2 NULL 4
Run Code Online (Sandbox Code Playgroud)
帮助?谢谢你!
只需将另一个键添加到order by:
row_number() over (Partition by a.ID
order by (case when a.date is not null then 1 else 2 end),
a.Date asc
)
Run Code Online (Sandbox Code Playgroud)