Ich benötige eine Frage, die, das die späteste Zahl nachfolgenden Werten entweder von A, von B oder von C durch personid.
zum Beispiel zurückbringt, die Felder sind optimiert wird:
PersonID, mydate, A, B, C
A, B, C entweder ist NULL oder 1. Auch nur ein von diesen kann 1 auf einmal haben (die anderen Werte sind für jede Reihe UNGÜLTIG). Das mydate wird nicht notwendigerweise bestellt, aber wir benötigen die spätesten nachfolgenden count.
Sample Daten:
PersonID, mydate, A, B, C ================ 1, 2010-04-22, 1, NULL, NULL 1, 2010-04-18, 1, NULL, NULL 1, 2010-04-21, 1, NULL, NULL 2, 2010-04-18, NULL, 1, NULL 1, 2010-04-14, 1, NULL, NULL 1, 2010-04-15, NULL, 1, NULL 2, 2010-04-15, 1, NULL, NULL
Would Rückkehr:
PersonID, ConsecType, ConsecCount ====================== 1, A, 3 2, B, 1
The ConsecType nicht notwendigerweise braucht, der Name des Feldes zu sein,… möglicherweise, das es eine Fallaussage verwenden könnte, oder etwas, das leistungsfähiger ist, das Bestehen von dem zu kennzeichnen value.
I, denken, dass MS-SQL 2005 mit einigen neueren Eigenschaften wie ROW_NUMBER, CTE, FACH, etc. kommt, die sein können, einfacheres dieses zu lösen. Ich habe viele Beispiele heraus dort aber keine gesehen, die leicht übertragbar sind (mindestens zu mir!). Sie scheinen auch, nachfolgende Werte von zwei Arten zu beschäftigen (normalerweise 0 oder 1)…, während dieses 3… oder möglicherweise mehr hat. Es würde groß sein, mit einer Lösung aufzukommen, in der es n-Arten geben könnte, die vom binären Wert sind (1 oder NULL). das
The leistungsfähiger die Frage ist für große Datensätze, das bessere!
Thanks!
|