Dovresti trasformarlo in:
.order("COALESCE(CAST(custom_fields.value AS timestamp), custom_fields.value) DESC")
per una migliore leggibilità.
Ordini per sortDate e, quando manca, usi createdAt. Tutto in ordine decrescente. La query restituisce i dati esattamente come richiesto, poiché il 2020 è “maggiore” del secondo posto del 2011.
Se desideri che i valori null appaiano per ultimi, devi usare:
.order("CAST(custom_fields.value AS timestamp) DESC NULLS LAST")