Sto cercando di scrivere quanto segue per ottenere un totale parziale di NumUsers distinti, in questo modo:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Lo studio di gestione non sembra molto contento di questo. L'errore scompare quando rimuovo la DISTINCT
parola chiave, ma non sarà un conteggio distinto.
DISTINCT
non sembra essere possibile all'interno delle funzioni di partizione. Come posso trovare il conteggio distinto? Uso un metodo più tradizionale come una sottoquery correlata?
Esaminando questo un po 'più in là, forse questi OVER
funzioni funzionano in modo diverso da Oracle in quanto non possono essere utilizzate SQL-Server
per calcolare i totali correnti.
Ho aggiunto un esempio dal vivo qui su SQLfiddle in cui cerco di utilizzare una funzione di partizione per calcolare un totale parziale .
COUNT
withORDER BY
invece diPARTITION BY
è mal definito nel 2008. Sono sorpreso che ti permetta di averlo. Secondo la documentazione , non è consentito l'usoORDER BY
di una funzione aggregata.