Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Базы Данных

Кросс-таблица через pivot-таблицу
Мне нужна помощь по реализации запроса кросс-таблицы в Delphi. У кого-нибудь имеется соответствующий опыт?

Использовать pivot-таблицу должен все тот-же общий механизм (относительно к любой базе данных SQL).

Предположим, что у нас есть данные продаж в таблице с полями Store, Product, Month, Sales, и вам необходимо отображать данные по продуктам за каждый месяц. (Примем, что поле 'month' для простоты имеет значения 1..12.)

Оригинальные данные примера:

 Store Product Month Sales
 #1 Toys 1 100
 #2 Toys 1 68
 #1 Toys 2 150
 #1 Books 1 75
 ...
Желаемый отчет должен выглядеть похожим на этот:
 Product January February March .....
 Toys 168 150
 Books 75 .....
Установите pivot-таблицу с именем tblPivot и 12 строками:
 pvtMonth pvtJan pvtFeb pvtMar pvtApr ....
 1 1 0 0 0 ....
 2 0 1 0 0
 3 0 0 1 0
 4 0 0 0 1
 .....
Теперь запрос, выполненный в виде:
 select Product, January=sum(Sales*pvtJan), 
 February=sum(Sales*pvtFeb),
 March=sum(Sales*pvtMar), 
 April=sum(Sales*pvtApr),...
 where Month = pvtMonth
 group by Product
даст вам информацию, опубликованную выше.

Поскольку pivot-таблица имеет только 12 строк, большинство SQL-движков сохранят результат в кэшовой памяти, так что скорость выполнения запроса весьма велика.

- John Crowley

Категория: Базы Данных | Добавил: DelphiAiX (20.05.2012)
Просмотров: 543 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]