J'ai besoin d'une question qui est optimisée qui renverra le dernier nombre de valeurs consécutives d'A, de B ou de C par personid.
par exemple, les champs ont lieu : le
PersonID, le mydate, A, B, C
A, B, C sera NULLE ou 1. En outre, seulement un de ces derniers peut avoir 1 à la fois (les autres valeurs seront NULLES pour chaque rangée). Le mydate n'est pas nécessairement commandé mais nous avons besoin des plus défuntes données consécutives de count.
Sample :
PersonID, mydate, A, B, C ================ 1, 2010-04-22, 1, NULLE, NULL 1, 2010-04-18, 1, NULLE, NULL 1, 2010-04-21, 1, NULLE, NULL 2, 2010-04-18, NULLE, 1, NULL 1, 2010-04-14, 1, NULLE, NULL 1, 2010-04-15, NULLE, 1, NULL 2, 2010-04-15, 1, NULLE, retour de NULL
Would : le
PersonID, ConsecType, ConsecCount ====================== 1, A, 3 2, B, 1
The ConsecType n'a pas besoin nécessairement d'être le nom du champ… peut-être qu'il pourrait employer un rapport de cas ou quelque chose plus efficace pour identifier l'existence de cela value.
I pensent que MS-SQL 2005 vient avec certaines plus nouvelles configurations comme ROW_NUMBER, CTE, CLOISON, etc. qui peuvent pouvoir résoudre ceci plus facile. Je n'en ai vu beaucoup d'exemples dehors là mais aucun qui sont facilement transmissibles (au moins à moi !). Ils semblent également traiter des valeurs consécutives de deux types (habituellement 0 ou 1)… tandis que ceci a 3… ou potentiellement plus. Il serait grand de fournir une solution dans laquelle il pourrait y avoir des types de N qui sont de valeur binaire (1 ou NULLE). le
The plus efficace la question est pour de grands ensembles de données, le meilleur !
Thanks !
class= de
|