Potresti risolverlo con un po' di denormalizzazione:
- Crea una tabella secondaria che contenga le stesse pkey e gli stessi stati della tua tabella di dati
- Aggiungi e compila una colonna del gruppo di stato che sarà una sorta di sotto-chiave numerata automaticamente (incremento automatico basato su 1 relativo a un singolo stato)
Quando non hai bisogno di filtrare puoi generare rand #s sulla pkey come hai menzionato sopra. Quando hai bisogno di filtrare, genera rand rispetto alle StatusPkeys dello stato particolare che ti interessa.
Esistono diversi modi per creare questa tabella. Potresti avere una procedura da eseguire su un intervallo o potresti eseguirla dal vivo. Quest'ultimo sarebbe però un calo delle prestazioni poiché il calcolo dello StatusPkey potrebbe diventare costoso.