powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Построение запроса с группировками
10 сообщений из 10, страница 1 из 1
Построение запроса с группировками
    #34434036
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычный SQL запрос выдает "плоскую" выборку. Мне же хотелось бы получить иерархически сгрупированный отчет. Допустим есть таблицы (все упрощенно):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Create table [Товары] (
ID integer not null primary key,
Name varchar( 100 ))

Create table [МестаХранения] (
ID integer not null primary key,
Name varchar( 100 ))

Create table [Поступление] (
ID integer not null primary key,
[Товар] integer, --ссылка на товары
[МестоХранения] integer, --ссылка на места хранения
[Сумма] numeric( 10 , 2 ) --сумма поступления (опустим количество)
)

Хочу получить запрос, выдающий поступления по местам хранения, а в них по товарам:
СКЛАД - 100
Сахар - 50
Соль - 20
Конфеты - 30
МАГАЗИН - 40
Сахар - 15
Конфеты - 25

и наоборот:
Сахар - 65
СКЛАД - 50
МАГАЗИН - 15
Соль - 20
СКЛАД - 20
Конфеты - 55
СКЛАД - 30
МАГАЗИН - 25
...
Рейтинг: 0 / 0
Построение запроса с группировками
    #34434438
MaryCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вам в ветку по соответсвующей СУБД
...
Рейтинг: 0 / 0
Построение запроса с группировками
    #34434522
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaryCatВам в ветку по соответсвующей СУБД
Почему? меня интересует "чистый" SQL, без привязки к конкретной СУБД
...
Рейтинг: 0 / 0
Построение запроса с группировками
    #34434956
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafПочему? меня интересует "чистый" SQL, без привязки к конкретной СУБДЧто значит ""чистый" SQL" в Вашем понимании ? По сабжу, искать по ключевым словам ROLLUP, CUBE.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Построение запроса с группировками
    #36430785
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим есть таблица продаж (пример упрощенный)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE SALES (
       ID Integer NOT NULL, 
       CLIENT Integer NOT NULL, --ссылка на покупателя
       GOOD Integer NOT NULL,  --ссылка на товар
       AMOUNT Numeric( 15 , 2 ) NOT NULL, --сумма продажи
       SALEDATE Date NOT NULL, --дата продажи
       QUANTITY Numeric( 15 , 3 ) NOT NULL, --количество товара
       CONSTRAINT PK_SALES PRIMARY KEY (ID)
);
вот как можно получить запрос с группировками и детальными записями. Здесь группировки: общее значение, по клиенту, по товару и детальные записи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select CLIENT,GOOD,SALEDATE,AMOUNT,
case 
     when GOOD is null then null
     else AMOUNT/QUANTITY
end as PRICE,  --цена имеет смысл для конкретного товара
RECLEVEL --уровень группировки
from
(select CLIENT,GOOD,SALEDATE,AMOUNT,QUANTITY,  3  as RECLEVEL
from SALES
union all
select CLIENT,GOOD,null,SUM(AMOUNT),SUM(QUANTITY),  2 
from SALES
group by CLIENT,GOOD
union all 
select CLIENT,null,null,SUM(AMOUNT),SUM(QUANTITY),  1 
from SALES
group by CLIENT
union all 
select null,null,null,SUM(AMOUNT),SUM(QUANTITY),  0 
from SALES) as T
order by CLIENT,GOOD,SALEDATE,RECLEVEL
Получив такой запрос его можно обработать по группировкам исходя из значения RECLEVEL.
Оптимален ли такой подход?
С уважением, Naf
...
Рейтинг: 0 / 0
Построение запроса с группировками
    #36431120
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это надо выводить в отчет, то задача неправильно сформулирована и группировка по складу не нужна. Ее сделает репортер.
...
Рейтинг: 0 / 0
Построение запроса с группировками
    #36431207
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVЕсли это надо выводить в отчет, то задача неправильно сформулирована и группировка по складу не нужна. Ее сделает репортер.Другими словами, Вы за то, чтобы группировки обрабатывались на клиенте?
...
Рейтинг: 0 / 0
Построение запроса с группировками
    #36431501
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NafДругими словами, Вы за то, чтобы группировки обрабатывались на клиенте
Можно это делать на сервере (см. oracle). Но если подсчитывать итоги ёкселем, то можно править отчет с пересчетом итогов, что интереснее.
...
Рейтинг: 0 / 0
Построение запроса с группировками
    #36431825
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNafДругими словами, Вы за то, чтобы группировки обрабатывались на клиенте
Можно это делать на сервере (см. oracle). Но если подсчитывать итоги ёкселем, то можно править отчет с пересчетом итогов, что интереснее.для разных задач - разные требования. Иногда нужно обеспечить не изменяемость данных
...
Рейтинг: 0 / 0
Построение запроса с группировками
    #36431872
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafLSVЕсли это надо выводить в отчет, то задача неправильно сформулирована и группировка по складу не нужна. Ее сделает репортер.Другими словами, Вы за то, чтобы группировки обрабатывались на клиенте?Применительно к репортеру - да.
"А так - нет" (с) :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Построение запроса с группировками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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