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

Откуда:
Сообщений: 7
Нужно вывести цены по прайс-листам в столбцах. Пробовала PIVOT но он не особо помог...

К сообщению приложен файл. Размер - 5Kb
18 сен 19, 08:04    [21972971]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4903
С такой постановкой задачи вам никого не поможет. Приведите пример нужного результата, как минимум.
18 сен 19, 09:13    [21972992]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
court
Member

Откуда:
Сообщений: 2020
marmeladka
Пробовала PIVOT но он не особо помог...
на язык ? :)

marmeladka, чем дважды постить один и тот же вопрос не читая ответов,
ознакомься таки с Рекомендации по оформлению сообщений в форуме (особенно п.6)

declare @t table (Pricelist varchar(50), Product varchar(50), Price money)

insert into @t values
('Regular','T-shirt',10),
('Regular','Pants',20),
('Exclusive','T-shirt',8)

select Product, Regular, Exclusive
from @t t
pivot (max(Price) for Pricelist in (Regular, Exclusive)) as pvt


ProductRegularExclusive
Pants20,00NULL
T-shirt10,008,00
18 сен 19, 10:04    [21973023]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
1C Developer
Member

Откуда:
Сообщений: 65
Сейчас выясниться, что количество прайс-листов заранее неизвестно.
18 сен 19, 10:48    [21973051]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3712
Megabyte
С такой постановкой задачи вам никого не поможет. Приведите пример нужного результата, как минимум.


Но, заметьте, ТС и не просит помощи. Это просто заметка, чтобы не забыть что-то.
18 сен 19, 11:00    [21973063]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
marmeladka
Member

Откуда:
Сообщений: 7
court,
Язык Transact sql в mssql, в теме написано.
PIVOT не помог в плане того что он рассчитан на статическое кол-во столбцов. Мне просто нужно вывести Pricelist и Price т.е. (1 строка)Regular ->10->20->15 и т.д.
18 сен 19, 11:44    [21973104]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
marmeladka
Member

Откуда:
Сообщений: 7
1C Developer,

Воу, да тут у нас дитя индиго!
18 сен 19, 11:45    [21973105]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3712
marmeladka
court,
Язык Transact sql в mssql, в теме написано.
PIVOT не помог в плане того что он рассчитан на статическое кол-во столбцов. Мне просто нужно вывести Pricelist и Price т.е. (1 строка)Regular ->10->20->15 и т.д.


четкость усиливается
18 сен 19, 11:46    [21973109]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
1C Developer
Member

Откуда:
Сообщений: 65
marmeladka
court,
Язык Transact sql в mssql, в теме написано.
PIVOT не помог в плане того что он рассчитан на статическое кол-во столбцов. Мне просто нужно вывести Pricelist и Price т.е. (1 строка)Regular ->10->20->15 и т.д.


Вас сложно понять, Вам нужен или динамический формируемый запрос или нарастающий итог (цены при этом собираются в строку), покажите результат картинкой или как.
18 сен 19, 11:53    [21973119]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
court
Member

Откуда:
Сообщений: 2020
marmeladka
Язык Transact sql в mssql, в теме написано.
тут всё на Transact sql в mssql, потому как форум по mssql
Не тупи !
marmeladka
PIVOT не помог в плане того что он рассчитан на статическое кол-во столбцов.

Динамический СКЛ, тебе ещё в первой теме это посоветовали
18 сен 19, 11:56    [21973123]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
marmeladka
court,
Язык Transact sql в mssql, в теме написано.
PIVOT не помог в плане того что он рассчитан на статическое кол-во столбцов. Мне просто нужно вывести Pricelist и Price т.е. (1 строка)Regular ->10->20->15 и т.д.


Да легко.

declare @t table (Pricelist varchar(50), Product varchar(50), Price money)

insert into @t values
('Regular','T-shirt',10),
('Regular','Pants',20),
('Exclusive','T-shirt',8)

select DISTINCT t.Pricelist + REPLACE((SELECT ' -> ' + CAST(t1.Price AS varchar(MAX)) AS 'data()' FROM @t t1 WHERE t1.Pricelist = t.Pricelist FOR XML PATH ('')), '>', '>')
from @t t
18 сен 19, 11:58    [21973129]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
marmeladka
Member

Откуда:
Сообщений: 7
Окей, другой вопрос. Помогите пожалуйста составить запрос выводящий "Price" в столбцах, где "price" и "Pricelist" динамические. Пример изображен на рисунке ниже. Так становится яснее?

К сообщению приложен файл. Размер - 2Kb
18 сен 19, 12:18    [21973154]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
marmeladka
Member

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

Посоветовали, благо я хз как его применить... гугление не особо помогло
18 сен 19, 12:19    [21973156]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
Konst_One
Member

Откуда:
Сообщений: 11521
вы зря страдаете с этим на чистом sql, возьмите Excel в руки и делайте сводные таблицы как вам душе угодно, а вообще задача для конструктора отчётов BI (их много всяких)
18 сен 19, 12:23    [21973158]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
marmeladka
court,

Посоветовали, благо я хз как его применить... гугление не особо помогло

Я выделил то, что вам предложили погуглить, выбрал пункт "Найти в Google", и первая же ссылка содержит даже уже готовую универсальную процедуру.

https://info-comp.ru/obucheniest/631-dynamic-pivot-in-t-sql.html

Можно ее не использовать, а разобраться, как оно работает, и написать свое решение.
18 сен 19, 12:26    [21973161]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
marmeladka
Member

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

Эти задания не я составляла и правила их решения придумывала тоже не я. Я могу сдать преподу Excel файл со словами "чет сложно, лови эксельку старый хрыщ", но тогда придется искать место на ярославке т.к. если меня отчислят то домой уже не пустят.
18 сен 19, 12:28    [21973163]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
marmeladka
Konst_One,

Эти задания не я составляла и правила их решения придумывала тоже не я. Я могу сдать преподу Excel файл со словами "чет сложно, лови эксельку старый хрыщ", но тогда придется искать место на ярославке т.к. если меня отчислят то домой уже не пустят.

т.е. учить не вариант?
18 сен 19, 12:35    [21973167]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
Konst_One
Member

Откуда:
Сообщений: 11521
TaPaK
marmeladka
Konst_One,

Эти задания не я составляла и правила их решения придумывала тоже не я. Я могу сдать преподу Excel файл со словами "чет сложно, лови эксельку старый хрыщ", но тогда придется искать место на ярославке т.к. если меня отчислят то домой уже не пустят.

т.е. учить не вариант?


если это задание на учёбу, то тогда конечно, стоит изучить и разобраться
18 сен 19, 12:36    [21973168]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
marmeladka
Окей, другой вопрос. Помогите пожалуйста составить запрос выводящий "Price" в столбцах, где "price" и "Pricelist" динамические. Пример изображен на рисунке ниже. Так становится яснее?


select *
from @t t
pivot (SUM(Price) for Product in ([T-shirt], [Pants])) as pvt


если список продутов не известен, то рисуете динамику с подставлениев в IN вашего перечня
18 сен 19, 12:41    [21973172]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
marmeladka
Konst_One,

Эти задания не я составляла и правила их решения придумывала тоже не я. Я могу сдать преподу Excel файл со словами "чет сложно, лови эксельку старый хрыщ", но тогда придется искать место на ярославке т.к. если меня отчислят то домой уже не пустят.


тип того

CREATE TABLE dbo.t (Pricelist varchar(50), Product varchar(50), Price money)

insert into dbo.t values
('Regular','T-shirt',10),
('Regular','Pants',20),
('Exclusive','T-shirt',8)

DECLARE @prod varchar(8000) = '',
	@sql  varchar(8000) = ''
SELECT  @prod += ',[' + product + ']' FROM dbo.t GROUP BY product

SET @sql  = 
	'select * 
	from dbo.t 
	pivot (SUM(Price) for Product in (' + SUBSTRING(@prod,2,LEN(@prod)) + ')) as pvt'

EXEC (@sql)

DROP TABLE IF EXISTS dbo.T 


но лучше искать место на ярославке :)
18 сен 19, 12:50    [21973178]     Ответить | Цитировать Сообщить модератору
 Re: запрос tsql в mssql  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3712
marmeladka
Konst_One,

Эти задания не я составляла и правила их решения придумывала тоже не я. Я могу сдать преподу Excel файл со словами "чет сложно, лови эксельку старый хрыщ", но тогда придется искать место на ярославке т.к. если меня отчислят то домой уже не пустят.


Здесь варанты какие: кто-то учит и преподу дает Excel файл со словами "чет сложно, лови эксельку", кто-то не учит и просто даёт преподу без слов
18 сен 19, 15:05    [21973310]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить