Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 PIVOT, GROUP BY...  [new]
temrus
Member

Откуда: р-О-ссия, Барвиха
Сообщений: 126
Есть таблица:
idskladtovarkolvokvartal
1A S1 100 1
2A S1 200 2
3A S1 200 2
4A S2 50 3
5A S3 120 1
6B S1 50 1
7B S2 1 1
8B S3 1 1
9B S3 1 2
10B S3 1 4

Каким образом необходимо изменить следующий запрос:
SELECT  sklad, tovar, pvt.[1], pvt.[2],pvt.[3],pvt.[4]  FROM dbo.ttest 
PIVOT (SUM(kolvo) FOR kvartal IN ([1],[2],[3],[4]))  AS pvt
ORDER BY pvt.sklad, pvt.tovar

чтобы получился НЕ ВОТ ТАКОЙ РЕЗУЛЬТАТ,
skladtovar1234
A S1 100 NULL NULL NULL
A S1 NULL 200 NULL NULL
A S1 NULL 200 NULL NULL
A S2 NULL NULL 50 NULL
A S3 120 NULL NULL NULL
B S1 50 NULL NULL NULL
B S2 1 NULL NULL NULL
B S3 1 NULL NULL NULL
B S3 NULL 1 NULL NULL
B S3 NULL NULL NULL 1


А ВОТ ТАКОЙ?
(помимо преобразования NULL->0 учтена сумма количества товара по его коду):
skladtovar1234
A S1 100 400 0 0
A S2 0 0 50 0
A S3 120 0 0 0
B S1 50 0 0 0
B S2 1 0 0 0
B S3 1 1 0 1
25 июл 11, 13:59    [11022919]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT, GROUP BY...  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 7498
temrus,

isnull + sum + group by
25 июл 11, 14:50    [11023268]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT, GROUP BY...  [new]
temrus
Member

Откуда: р-О-ссия, Барвиха
Сообщений: 126
env,

Всё, сдедал...
Сначала попробовал отдельно SUM и GROUP BY:
SELECT sklad, tovar, quartal, SUM(kolvo) AS qty
FROM ttest GROUP BY sklad, tovar, quartal

А уж потом подставил сюда:
SELECT podrazd, typen, 
pvt.[1], pvt.[2], pvt.[3], pvt.[4]
FROM
(SELECT sklad, tovar, quartal, SUM(kolvo) AS qty 
FROM ttest 
GROUP BY sklad, tovar, quartal) AS st 
PIVOT
(
SUM(qty) FOR quartal IN ([1], [2], [3], [4])
) AS pvt ORDER BY sklad, tovar
25 июл 11, 15:10    [11023406]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить