Ho bisogno di una domanda che è ottimizzata che restituirà l'ultimo numero dei valori successivi di A, della B o della C da personid.
per esempio, i campi ha luogo: il
PersonID, mydate, A, B, C
A, B, C sarà POSIZIONE DI SEGNALE MINIMO o 1. Inoltre, soltanto uno di questi può avere 1 alla volta (gli altri valori saranno NULLI per ogni fila). Il mydate necessariamente non è ordinato ma abbiamo bisogno di ultimi dati successivi di count.
Sample:
PersonID, mydate, A, B, C ================ 1, 2010-04-22, 1, POSIZIONE DI SEGNALE MINIMO, NULL 1, 2010-04-18, 1, POSIZIONE DI SEGNALE MINIMO, NULL 1, 2010-04-21, 1, POSIZIONE DI SEGNALE MINIMO, NULL 2, 2010-04-18, POSIZIONE DI SEGNALE MINIMO, 1, NULL 1, 2010-04-14, 1, POSIZIONE DI SEGNALE MINIMO, NULL 1, 2010-04-15, POSIZIONE DI SEGNALE MINIMO, 1, NULL 2, 2010-04-15, 1, POSIZIONE DI SEGNALE MINIMO, ritorno di NULL
Would: il
PersonID, ConsecType, ConsecCount ====================== 1, A, 3 2, B, 1
The ConsecType necessariamente non deve essere il nome del campo… forse potrebbe usare una dichiarazione di caso o qualcosa più efficiente identificare l'esistenza di quello value.
I pensa che MS-SQL 2005 venga con alcune più nuove caratteristiche come ROW_NUMBER, CTE, il DIVISORIO, ecc. che possono potere risolvere questo più facile. Non ne ho veduto molti esempi fuori là ma che fossero facilmente trasferibili (almeno a me!). Inoltre sembrano occuparsi dei valori successivi di due tipi (solitamente 0 o 1)… mentre questo ha 3… o potenzialmente più. Sarebbe grande da fornire una soluzione in cui ci potrebbero essere tipi di N che sono utile binario (1 o POSIZIONE DI SEGNALE MINIMO). il
The più efficiente la domanda è per i grandi gruppi di dati, il migliore!
Thanks!
class= del
|