У меня есть набор данных, который выглядит примерно так ( ОЧЕНЬ упрощенно):
productId Qty dateOrdered
--------- --- -----------
1 2 10/10/2008
1 1 11/10/2008
1 2 10/10/2009
2 3 10/12/2009
1 1 10/15/2009
2 2 11/15/2009
Из этого мы пытаемся создать запрос, чтобы получитьчто-то вроде:
productId Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
--------- ---- --- --- --- --- --- --- --- --- --- --- --- ---
1 2008 0 0 0 0 0 0 0 0 0 2 1 0
1 2009 0 0 0 0 0 0 0 0 0 3 0 0
2 2009 0 0 0 0 0 0 0 0 0 3 2 0
То, как я делаю это сейчас, я делаю 12 выборок, по одному на каждый месяц, и помещаю их в временные таблицы.Я тогда делаю гигантское соединение.Все работает, но этот парень очень медленный.
Я знаю, что это не так уж и много, но, зная, что я едва квалифицируюсь как тир в мире БД, мне интересно, есть ли лучшийподход высокого уровня к этому, что я мог бы попробовать.(Я предполагаю, что есть.)
(Я использую MS Sql Server, поэтому ответы, специфичные для этой БД, подойдут.)
(Я только начинаю искатьв «PIVOT» в качестве возможной помощи, но я пока ничего об этом не знаю, поэтому, если кто-то захочет это прокомментировать, это также может быть полезно.)