Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Построение запроса с группировками / 10 сообщений из 10, страница 1 из 1
03.04.2007, 13:27
    #34434036
Naf
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
03.04.2007, 14:59
    #34434438
MaryCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение запроса с группировками
Вам в ветку по соответсвующей СУБД
...
Рейтинг: 0 / 0
03.04.2007, 15:21
    #34434522
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение запроса с группировками
MaryCatВам в ветку по соответсвующей СУБД
Почему? меня интересует "чистый" SQL, без привязки к конкретной СУБД
...
Рейтинг: 0 / 0
03.04.2007, 16:54
    #34434956
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение запроса с группировками
NafПочему? меня интересует "чистый" SQL, без привязки к конкретной СУБДЧто значит ""чистый" SQL" в Вашем понимании ? По сабжу, искать по ключевым словам ROLLUP, CUBE.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
26.01.2010, 11:06
    #36430785
Naf
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
26.01.2010, 12:54
    #36431120
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение запроса с группировками
Если это надо выводить в отчет, то задача неправильно сформулирована и группировка по складу не нужна. Ее сделает репортер.
...
Рейтинг: 0 / 0
26.01.2010, 13:15
    #36431207
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение запроса с группировками
LSVЕсли это надо выводить в отчет, то задача неправильно сформулирована и группировка по складу не нужна. Ее сделает репортер.Другими словами, Вы за то, чтобы группировки обрабатывались на клиенте?
...
Рейтинг: 0 / 0
26.01.2010, 14:38
    #36431501
_мод
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение запроса с группировками
NafДругими словами, Вы за то, чтобы группировки обрабатывались на клиенте
Можно это делать на сервере (см. oracle). Но если подсчитывать итоги ёкселем, то можно править отчет с пересчетом итогов, что интереснее.
...
Рейтинг: 0 / 0
26.01.2010, 16:26
    #36431825
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение запроса с группировками
_модNafДругими словами, Вы за то, чтобы группировки обрабатывались на клиенте
Можно это делать на сервере (см. oracle). Но если подсчитывать итоги ёкселем, то можно править отчет с пересчетом итогов, что интереснее.для разных задач - разные требования. Иногда нужно обеспечить не изменяемость данных
...
Рейтинг: 0 / 0
26.01.2010, 16:45
    #36431872
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение запроса с группировками
NafLSVЕсли это надо выводить в отчет, то задача неправильно сформулирована и группировка по складу не нужна. Ее сделает репортер.Другими словами, Вы за то, чтобы группировки обрабатывались на клиенте?Применительно к репортеру - да.
"А так - нет" (с) :)
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Построение запроса с группировками / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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