Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

Как при группировке вставить названия групп, как в супермажных отчётах? : Oracle

24.04.2024 3:22


19.11.2010 17:28
blondbf
 
Код:
SELECT s.displayitem, s.article, c.name, c.country, s.itemprice,
SUM(s.quantity),
SUM(s.totalprice)
FROM SMSpec s, SMCard c WHERE
s.article = c.article AND
s.doctype = 'WI' AND
s.docid = 'БАА016593'
GROUP BY GROUPING SETS ((s.displayitem, s.article, c.name, c.country, s.itemprice), (c.country), NULL)
ORDER BY s.displayitem ASC
Такой запрос выдаёт товары из накладной с группировкой по странам. И подведением итогов по группе. Как сделать:
1. Чтобы в детальных строках (где есть наименование) страна не показывалась.
2. Вставить в начале каждой страны (т.е. группы) вставить название, как это делается в супермажных отчётах.
3. Вставить в конец группы "Итого по группе: ..." как в супермажных отчётах.
19.11.2010 17:34
Mtirt
 
А где ты всё это делаешь? В оракл репортс?
19.11.2010 17:53
blondbf
 
Нет, своя приблуда. Сейчас она делает из результатотабличек html-таблички. Хотелось что я хочу отрабатывать на уровне оракла.
22.11.2010 10:05
vdm
 
Оно конечно можно.
Но без хорошего знания sql - возни много.
Отчетные системы как раз и упрощают такие вещи.

Проверяй.
Код:
SELECT  g_id,
        DECODE(g_id, 1, country, 2, null, 3, 'Итого по стране ' || country || ': ', 'Всего: ') c,
        displayitem, article, name,
        DECODE(g_id, 1, null, itemprice) itemprice,
        DECODE(g_id, 1, null, total_q) total_q,
        DECODE(g_id, 1, null, total_p) total_p
FROM
(
SELECT   GROUPING_ID(c.country,  null, s.article) g_id,
         s.displayitem, s.article, REPLACE(c.NAME, chr(9), ' ') name, c.country, s.itemprice,
         SUM (s.quantity) total_q, SUM (s.totalprice) total_p
    FROM supermag.smspec s, supermag.smcard c
   WHERE s.article = c.article AND s.doctype = 'OR' AND s.docid = 'ЗП40232'
GROUP BY GROUPING SETS ((s.displayitem, s.article, c.NAME, c.country, s.itemprice),
                        (c.country, null),
                         c.country,
                         null)
)
ORDER BY country ASC, g_id ASC, displayitem ASC
Часовой пояс GMT +3, время: 03:22.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.