powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хитрый отчёт
7 сообщений из 7, страница 1 из 1
Хитрый отчёт
    #39705804
saszay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!

Помогите составить запрос для отчёта. Дана таблица:

Товар Описание Продавец Кол Цена
----------------------------------------------
тов1 опис1 прод1 1 10
тов2 опис2 прод1 2 15
тов3 опис3 прод2 3 20
тов4 опис4 прод2 1 25
тов5 опис5 прод2 2 10
...

Нужно составить запрос, который бы вернул данные вот так:

тов1 опис1 1 10
тов2 опис2 2 15
прод1 3 25
тов3 опис3 3 20
тов4 опис4 1 25
тов5 опис5 2 10
прод2 6 55
...
всего 9 80

Есть идеи?
...
Рейтинг: 0 / 0
Хитрый отчёт
    #39705807
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saszay,

читайте про GROUP by (cube и rollup)
...
Рейтинг: 0 / 0
Хитрый отчёт
    #39705808
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saszay,

Процедура выдает данные для отчета. Внутри идет курсор с order by продавец, товар. При переключении продавца добавляете промежуточный итог количества. Столбик цена суммировать не нужно , сумма 10 и 15 = 25 ничего не даст. Нужно суммировать произведение от количества и цены, назвав его оборотом в шекелях.
В конце добавляете строку - все через unuon all или через таблицу в tempdb - с общими итогами.

Всё. Думаю, вполне кошерно.
...
Рейтинг: 0 / 0
Хитрый отчёт
    #39705809
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarAntsaszay,

читайте про GROUP by (cube и rollup)
Ой-вей, зачем такие сложности, когда можно сделать вместо запроса простую процедуру, из которой получать нужные строки для отчета. Ему же не космический корабль делать, а так, плот из досок через пруд переплыть.
...
Рейтинг: 0 / 0
Хитрый отчёт
    #39705810
saszay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WarAnt,

Не совсем подходит, т.к. группировать нужно по продавцу, а товар и описание трогать не нужно.
А в GROUP нужно указывать все поля
...
Рейтинг: 0 / 0
Хитрый отчёт
    #39705819
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare @t table (Товар varchar(10), Описание varchar(10), Продавец varchar(10), Кол int, Цена int);

insert into @t
values
('тов1', 'опис1', 'прод1', 1, 10),
('тов2', 'опис2', 'прод1', 2, 15),
('тов3', 'опис3', 'прод2', 3, 20),
('тов4', 'опис4', 'прод2', 1, 25),
('тов5', 'опис5', 'прод2', 2, 10);

select
 Товар, Описание, Продавец, sum(Кол), sum(Цена)
from
 @t
group by
 grouping sets((Товар, Описание, Продавец), (Продавец), ());


Внешний вид выборки допилите сами. С помощью case и функци grouping.
...
Рейтинг: 0 / 0
Хитрый отчёт
    #39705925
saszay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Спасибо, то что нужно
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хитрый отчёт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]