Ponieważ mój DBMS nie pozwala na "Nerls Last" w zamówieniu przez klauzulę, potrzebuję pomocy z następującymi.

Row_number () over (partycja przez A.Id zamówienie przez A.date ASC

Potrzebuję moich wierszy, aby uzyskać sekwencję numeru wiersza przez ID zamówiony przez datę rosnącą, ale mają ostatnie wiersze z Null Date Last w mojej sekwencji. Oczywiście byłoby wspaniale, gdybym mógł powiedzieć "Nulls Last" w moim zamówieniu, jednak mój DBMS (MSSQL) nie pozwala na to.

Na przykład, co obecnie dzieje:

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

Co chcę się wydarzyć:

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

Wsparcie? DZIĘKUJĘ CI!

3
Maddie Ganzlin 28 luty 2019, 21:43

1 odpowiedź

W latej traktuj wszystkie wartości Null jako maksymalną możliwą datę, używając ISNLL.

row_number() over(Partition by a.ID 
     order by ISNULL(a.Date, CAST('9999/12/31' AS DATETIME)) asc
)
1
Richard II 28 luty 2019, 18:52