powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Итог отдельной строкой по итоговому запросу.
8 сообщений из 8, страница 1 из 1
Итог отдельной строкой по итоговому запросу.
    #39707095
iv_roman_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

есть запрос:
Код: plsql
1.
select name, money from (/*тут много много кода)*/) t1;



мне надо получить результат следующего вида:

с1 | c2
Итог | сумма по столбцу money, т.е. 600
pet | 100
ann | 200
ben | 300
...
Рейтинг: 0 / 0
Итог отдельной строкой по итоговому запросу.
    #39707099
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select 0 as ord, name, money from t1
union all
select 1 as ord, "Итого" as name, sum(money) from t1
order by ord asc
...
Рейтинг: 0 / 0
Итог отдельной строкой по итоговому запросу.
    #39707102
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
with q(name, money) as (select 'pet', 100 from dual union all
select 'ann', 200 from dual union all
select 'ben', 300 from dual)

select nvl(name,'Итого'), sum(money) from q 
group by rollup(name)
order by name nulls first
...
Рейтинг: 0 / 0
Итог отдельной строкой по итоговому запросу.
    #39707118
iv_roman_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsevselect 0 as ord, name, money from t1
union all
select 1 as ord, "Итого" as name, sum(money) from t1
order by ord asc

Это работает только к физической таблице. t1 - это результат запроса.
...
Рейтинг: 0 / 0
Итог отдельной строкой по итоговому запросу.
    #39707121
iv_roman_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo
Код: plsql
1.
2.
3.
4.
5.
6.
7.
with q(name, money) as (select 'pet', 100 from dual union all
select 'ann', 200 from dual union all
select 'ben', 300 from dual)

select nvl(name,'Итого'), sum(money) from q 
group by rollup(name)
order by name nulls first



Все хорошо Но мне также надо вывести и департамент у сотрудника. И тогда все ломается.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
with q(name, dep,  money) as (select 'pet', 3, 100 from dual union all
select 'ann', 4, 200 from dual union all
select 'ben', 5, 300 from dual)

select nvl(name,'Итого'), dep, sum(money) from q 
group by rollup(name, dep)
order by name nulls first;
...
Рейтинг: 0 / 0
Итог отдельной строкой по итоговому запросу.
    #39707137
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_roman_vl
Все хорошо Но мне также надо вывести и департамент у сотрудника. И тогда все ломается.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
select  ename,
        case grouping(ename)
          when 1 then null
          else max(deptno)
        end deptno,
        sum(sal) sal
  from  emp
  group by grouping sets((),(ename,empno))
  order by grouping(ename) desc,
           ename
/

ENAME          DEPTNO        SAL
---------- ---------- ----------
                           29025
ADAMS              20       1100
ALLEN              30       1600
BLAKE              30       2850
CLARK              10       2450
FORD               20       3000
JAMES              30        950
JONES              20       2975
KING               10       5000
MARTIN             30       1250
MILLER             10       1300

ENAME          DEPTNO        SAL
---------- ---------- ----------
SCOTT              20       3000
SMITH              20        800
TURNER             30       1500
WARD               30       1250

15 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
Итог отдельной строкой по итоговому запросу.
    #39707142
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
select  case grouping(empno)
          when 1 then 'Total'
          else max(ename)
        end ename,
        case grouping(empno)
          when 1 then null
          else max(deptno)
        end deptno,
        sum(sal) sal
  from  emp
  group by grouping sets((),(empno))
  order by grouping(empno) desc,
           max(emp.ename)
/

ENAME          DEPTNO        SAL
---------- ---------- ----------
Total                      29025
ADAMS              20       1100
ALLEN              30       1600
BLAKE              30       2850
CLARK              10       2450
FORD               20       3000
JAMES              30        950
JONES              20       2975
KING               10       5000
MARTIN             30       1250
MILLER             10       1300

ENAME          DEPTNO        SAL
---------- ---------- ----------
SCOTT              20       3000
SMITH              20        800
TURNER             30       1500
WARD               30       1250

15 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
Итог отдельной строкой по итоговому запросу.
    #39707150
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
group by rollup((dep, name))
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Итог отдельной строкой по итоговому запросу.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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