Använd uttrycket
field_c IS NOT NULL
som första ORDER BY
Artikel. Den utvärderas till ...FALSE
.. om NULLTRUE
.. om INTE NULL.
Och FALSE
(0) sorterar före TRUE
(1). Fungerar för alla datatyper och alla möjliga värdefördelningar.
SELECT field_a,
row_number() OVER (PARTITION BY field_b
ORDER BY field_c IS NOT NULL, field_c) AS row_number
FROM test_table
ORDER BY row_number;