Eu preciso uma pergunta que seja aperfeiçoada que retornará o número o mais atrasado de valores consecutivos de A, de B ou de C por personid.
por exemplo, os campos se realize: o
PersonID, mydate, A, B, C
A, B, C será ZERO ou 1. Também, somente um destes pode ter 1 de cada vez (os outros valores serão NULOS para cada fileira). O mydate não é requisitado necessariamente mas nós precisamos os dados consecutivos os mais atrasados de count.
Sample:
PersonID, mydate, A, B, C ================ 1, 2010-04-22, 1, ZERO, NULL 1, 2010-04-18, 1, ZERO, NULL 1, 2010-04-21, 1, ZERO, NULL 2, 2010-04-18, ZERO, 1, NULL 1, 2010-04-14, 1, ZERO, NULL 1, 2010-04-15, ZERO, 1, NULL 2, 2010-04-15, 1, ZERO, retorno de NULL
Would: o
PersonID, ConsecType, ConsecCount ====================== 1, A, 3 2, B, 1
The ConsecType não precisa necessariamente de ser o nome do campo… talvez que poderia usar uma indicação de caso ou algo mais eficiente identificar a existência daquele value.
I pensa que MS-SQL 2005 vem com algumas caraterísticas mais novas como ROW_NUMBER, CTE, DIVISÓRIA, etc. que podem poder resolver isto mais fácil. Eu não vi muitos exemplos para fora lá mas nenhuns que são facilmente transferíveis (pelo menos a mim!). Igualmente parecem tratar os valores consecutivos de dois tipos (geralmente 0 ou 1)… visto que este tem 3… ou potencial mais. Seria grande vir acima com uma solução em que poderia haver os tipos de N que são do valor binário (1 ou ZERO). o
The mais eficiente a pergunta é para grandes séries de dados, o melhor!
Thanks!
class= do
|