Мне нужен вопрос оптимизирован возвратит самый последний число последовательных значений или a, b или c personid.
например, поля являются следующими:
PersonID, mydate, a, b, C
A, b, c или будет NULL или 1. Также, только одно из этих может иметь 1 одновременно (другие значения будут НУЛЕВЫ для каждого рядка). Mydate обязательно не приказано но нам нужны самые последние последовательные данные по count.
Sample:
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:
PersonID, ConsecType, ConsecCount ====================== 1, a, 3 2, b, 1
The ConsecType обязательно не нужно быть имя поля… возможно, котор оно smogло использовать заявление случая или что-то более эффективное для того чтобы определить существование того value.
I думает MS-SQL 2005 приходит с некоторыми более новыми характеристиками как ROW_NUMBER, CTE, ПЕРЕГОРОДКА, etc. которое могут мочь разрешить это более легкое. Я не видел много примеров вне там но никакие легк переносимо (хотя бы к мне!). Они также кажется, что общают с последовательными значениями 2 типов (обычно 0 или 1)… тогда как это имеет 3… или потенциальн больше. Оно был бы больш прийти вверх с разрешением в smogло быть типы n бинарного значения (1 или NULL).
The более эффективное вопрос для больших datasets, лучшего!
Thanks!
class=
|