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

Откуда:
Сообщений: 30
Есть данное условие и сюда нужно добавить pivot ? как можно сделать ?

select Production.Product.name, Production.ProductInventory.Quantity
from Production.Product, Production.ProductInventory
where Production.Product.name like 'Sport-100 Helmet, Blue%' or
Production.Product.name like 'AWC Logo Cap%' or Production.Product.name like 'Water Bottle - 30 oz.%'
intersect
select Production.Product.name, Production.ProductInventory.Quantity
from Production.Product, Production.ProductInventory
where Production.Product.ProductID=Production.ProductInventory.ProductID
order by Production.Product.name
23 ноя 17, 11:59    [20977492]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
iiyama
Member

Откуда:
Сообщений: 642
сорри немного офф,
Как это развидеть?!

по теме Pivot
join
23 ноя 17, 12:26    [20977574]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Вот отлично разжевано.

http://armor.kiev.ua/wiki/index.php?title=Участник:ArmorAdmin/PIVOT
23 ноя 17, 12:46    [20977619]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
iiyama,
результат выходит таким образом,
а нужно чтобы выходило столбиком.
не могу разобраться, куда добавить pivot

К сообщению приложен файл. Размер - 46Kb
23 ноя 17, 12:58    [20977648]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
Cammomile,

спасибо
23 ноя 17, 13:08    [20977672]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
iiyama
сорри немного офф,
Как это развидеть?!

Он еще научится...И перестанет использовать intersect. Всему свое время.
select
	t1.name -- наименование номенклатуры
	,t2.Quantity -- остаток в штуках
from Production.Product t1 -- таблица номенклатуры
inner join Production.ProductInventory t2 -- таблица текущих остатков
on t1.ProductID=t2.ProductID
where
( -- условие отбора по номенклатуре
t1.name like 'Sport-100 Helmet, Blue%'
or t1.name like 'AWC Logo Cap%'
or t1.name like 'Water Bottle - 30 oz.%'
)
intersect -- он возвращает все совпадающие варианты
-- зачем вторая часть - вообще непонятно
-- мы в первой уже все получили
-- только не отсортировали, а во второй отсортировали
select
	t1.name -- наименование номенклатуры
	,t2.Quantity -- остаток в штуках
from Production.Product t1 -- таблица номенклатуры
inner join Production.ProductInventory t2 -- таблица текущих остатков
on t1.ProductID=t2.ProductID
order by t1.name -- а теперь сортируем по наименованию
23 ноя 17, 14:40    [20977963]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
Andy_OLAP,
огромнейшее спасибо
24 ноя 17, 06:58    [20979747]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
подскажите, где неправильно написала ?

К сообщению приложен файл. Размер - 119Kb
27 ноя 17, 11:10    [20985154]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
belu4ano-kg,

ну IN это нифига не LIKE
27 ноя 17, 11:11    [20985158]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Дело в том, что [] означают, что внутри однозначное имя объекта. В твоем случае это [Поле %], но поскольку во входном датасете у тебя такого поля нет, то и пивот ничего не считает.

DECLARE @Production TABLE (pname varchar(20), Cnt int)
insert into @Production SELECT 'Apples Granny', 4
insert into @Production SELECT 'Apples Gala', 2
insert into @Production SELECT 'Oranges', 10 

 /*В квадратных скобках конкретные названия номенклатуры, которые для пивота будут полями*/
SELECT * FROM @Production  PIVOT   (SUM(CNT)  FOR pname in ([Apples Granny], [Apples Gala])) PVT

/*если ты хочешь аггрегацию подтипа, то надо так*/

 
SELECT * 
  FROM ( 
  SELECT GroupName = CASE WHEN pname like 'Appl%' THEN 'APPLES'
                          WHEN pname like 'Ora%' THEN 'ORANGES'
                     END 
  ,       Cnt
  FROM @Production
  ) PvtSource 
 PIVOT   (SUM(CNT)  FOR GroupName in ([APPLES], [ORANGES])) PVT
27 ноя 17, 11:38    [20985236]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
belu4ano-kg
подскажите, где неправильно написала ?

У вас все неправильно. Начните с уважительного обращения к представителям форума - представления текста запросов в текстовом виде, обернутом в теги.
27 ноя 17, 11:42    [20985256]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Cammomile
Дело в том, что [] означают, что внутри однозначное имя объекта. В твоем случае это [Поле %], но поскольку во входном датасете у тебя такого поля нет, то и пивот ничего не считает.

Это только 1 из 2 причин, почему ее код не работает.
Так что ей твой абстрактный совет сейчас, как мертвому припарка.
27 ноя 17, 11:48    [20985275]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
Cammomile,

спасибо
27 ноя 17, 13:13    [20985667]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
Cammomile,

если такое решение, где не нужно перечислять в pivote всё по отдельности

К сообщению приложен файл. Размер - 138Kb
4 дек 17, 08:55    [21003097]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Не понял утверждение это или вопрос. Если вопрос, то готового универсального решения нет.

Надо будет динамически формировать строку запроса, начитать FOR FieldName IN ...

И потом exec(@sql)
4 дек 17, 09:56    [21003185]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с pivot ?  [new]
iii2
Member

Откуда:
Сообщений: 202
Andy_OLAP
iiyama
сорри немного офф,
Как это развидеть?!

Он еще научится...И перестанет использовать intersect. Всему свое время.

А в чем ужас intersect?
Конечно, реже чем except бывает нужен, но всё же.
Например, быстро сравнить 2 выборки со 100500 полями, когда exists замучаешься писать, особенно с учетом того, что в половине NULL.
... интересно просто...
4 дек 17, 16:47    [21004986]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить