У меня есть таблица клиентов и таблица заказов.
идентификатор клиента - это внешний ключ в таблице деталей заказа (здесь я упрощаю)
Таблица orderdetail содержит следующие столбцы
Номер заказа
ItemId
Пользовательский ИД
Размер
Столбец «Размер» может принимать любое из следующих значений
1. лр
2. мкр
3. см
Таким образом, таблица заказа может содержать следующие записи (я разделил запятыми столбцы)
OrderId ItemId CustomerId Размер
1,1,30,lr
1,1,30,md
1,1,30,sm
2,1,30,lr
2,1,30,md
3,1,30,lr
3,1,30,sm
4,1,30,lr
5,1,30,md
6,2,30,sm
7,3,30,md
8,3,30,lr
Мне нужен действительно эффективный запрос (миллионы записей в таблицах деталей заказа), который имеет следующий вывод для данного customerId (в нашем случае 30)
ItemId SizeLr SizeMd SizeSm
1 4 3 2
2 0 0 1
3 1 1 0
Используемый мной запрос использует 3 групповых запроса (по одному для «lr», «md» и «sm»), и в результате он просматривает таблицу 3 раза.
Я ищу решение, которое сканирует таблицу только один раз. Я думаю, что решение использует новую функцию Grouping Set в MSSQL 2008. Но в любом случае, решение, использующее одно сканирование, если я надеюсь, что кто-то может мне помочь.
EDIT
Фактический вывод должен содержать и другие поля из таблицы клиентов и таблицы деталей заказа. Эти другие поля не зависят от агрегатов.
Например
ItemName ItemId SizeLr SizeMd SizeSm
A 1 4 3 2
B 2 0 0 1
C 3 1 1 0
Totals 5 4 4
Было бы хорошо, если бы я мог получить итоговые значения для каждого из столбцов размера