powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача по oracle 10g
8 сообщений из 8, страница 1 из 1
Задача по oracle 10g
    #39442013
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется выборка из БД

Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
SELECT DISTINCT sub.castyname "Наименование",
  sub.castynumnal "ИНН",
  sub.Cnastynasty,
  sub.cnastyprizn,
  sub.history,
  sum(nvl (sub.MmrtyRSUM_all_period_dt, 0)) "Сумма ДТ",
  sum(nvl (sub.MmrtyRSUM_all_period_kt, 0)) "Сумма КТ"
from(
SELECT DISTINCT s.castyname ,
  s.castynumnal ,
  a.Cnastynasty,
  a.cnastyprizn,
  MmrtyRSUM_all_period_dt.MmrtyRSUM  MmrtyRSUM_all_period_dt,
  MmrtyRSUM_all_period_kt.MmrtyRSUM  MmrtyRSUM_all_period_kt,
  tr.CbasdfFLAG || ' - ' || tr.dbasdfdate history
FROM xxi.asty s,
xxi."nasty" a ,
(SELECT DISTINCT aa.Cbasdfnasty,
                        DECODE (aa.CbasdfFLAG, 'О', 'Открыт', 'Б', 'Блокирован', 'З', 'Закрыт', 'Ч', 'Частично блокирован', NULL) CbasdfFLAG,
                        aa.dbasdfdate 
                        FROM xxi."basdf" aa 
                         ) tr, 
(SELECT SUM(t.MmrtyRSUM) MmrtyRSUM, t.cmrtynastyd   FROM xxi."mrty" t   
                      WHERE t.DmrtyTRAN BETWEEN to_date('20.03.2017 00.00.00','dd.mm.yyyy hh24.mi.ss') and to_date('17.04.2017 23.59.59','dd.mm.yyyy hh24.mi.ss')   
                      group by t.cmrtynastyd  ) MmrtyRSUM_all_period_dt,
                            
                            
(SELECT SUM(t.MmrtyRSUM) MmrtyRSUM, t.cmrtynastyc   FROM xxi."mrty" t   
            WHERE t.DmrtyTRAN BETWEEN to_date('20.03.2017 00.00.00','dd.mm.yyyy hh24.mi.ss') and to_date('17.04.2017 23.59.59','dd.mm.yyyy hh24.mi.ss')   
             group by t.cmrtynastyc) MmrtyRSUM_all_period_kt  
                         
WHERE 
a.inastyasty = s.iastynum and
tr.Cbasdfnasty = a.cnastynasty and
MmrtyRSUM_all_period_dt.cmrtynastyd(+) = a.Cnastynasty and
MmrtyRSUM_all_period_kt.cmrtynastyc(+) = a.Cnastynasty and
a.IDSMR <> '16'
AND a.InastyBS2 LIKE '40%'
AND a.inastybs2 NOT IN ('40817', '40911', '40821','40820', '40901', '40906', '40912', '40913')
AND s.castynumnal IN ( '6658211146',
'7452139843',
'1832129590')

) sub
group by sub.castyname, sub.castynumnal, sub.history, sub.Cnastynasty,
sub.cnastyprizn
 ;




выводит данные такие

Наименование ИНН Cnastynasty cnastyprizn HISTORY Сумма ДТ Сумма КТ
"йцу" 7452139843 0064160000 О Открыт - 28.03.2017 00:00:00 40 40
"йцу" 7452139843 0162160020 О Открыт - 28.03.2017 00:00:00 0 0
"фыв" 1832129590 0664280001 О Открыт - 03.04.2017 00:00:00 28 180
"вап" 6658211146 0062100001 О Открыт - 21.03.2017 00:00:00 0 0

необходимы данные такого вида

Наименование ИНН Cnastynasty cnastyprizn HISTORY Сумма ДТ Сумма КТ
"йцу" 7452139843 0064160000 *|* 0162160020 О *|* О Открыт - 28.03.2017 00:00:00 *|* Открыт - 28.03.2017 00:00:00 40 40
"фыв" 1832129590 0664280001 О Открыт - 03.04.2017 00:00:00 28 180
"вап" 6658211146 0062100001 О Открыт - 21.03.2017 00:00:00 0 0

Про
Код: plsql
1.
listagg () within group (order by )

- знаю, и знаю что в оракл 10g не сработает.
пробовал WM_CONCAT - но на некоторых значениях отваливается.

Подскажите возможно реализовать как-то по другому, не прошу писать код, прошу натолкнуть на мысль.
...
Рейтинг: 0 / 0
Задача по oracle 10g
    #39442015
Я - Lеft jоin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
saxarock,

Используй меня раз 10 по ИНН и Наименованию
...
Рейтинг: 0 / 0
Задача по oracle 10g
    #39442017
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarockвозможно реализовать как-то по другому, не прошу писать код, прошу натолкнуть на мысль.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
------------------------------------------------------------------------------------------
-- ListAgg - эмуляция ListAgg (из 11g) в 10g
---
-- Пример:
--     Util.ListAgg(cast(collect(path order by path) as tp_varchar2_4000_table), ', ') as paths --10g
--   вместо
--     listagg(path, ', ') within group (order by path) as paths                                --11g
---------
function ListAgg(aTable tp_varchar2_4000_table, aSeparator varchar2 := '|') return varchar2;

...
Рейтинг: 0 / 0
Задача по oracle 10g
    #39442018
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Поделись (если не трудно и бесплатно), если есть реализованная функция.
...
Рейтинг: 0 / 0
Задача по oracle 10g
    #39442022
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarockПоделись (если не трудно и бесплатно), если есть реализованная функция.А как же "не прошу писать код, прошу натолкнуть на мысль" ?
...
Рейтинг: 0 / 0
Задача по oracle 10g
    #39442023
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicА как же "не прошу писать код, прошу натолкнуть на мысль" ?

Запамятовал, я же ленивый)
...
Рейтинг: 0 / 0
Задача по oracle 10g
    #39442024
Anatoly B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
saxarock,

погугли ODCIAggregate...
...
Рейтинг: 0 / 0
Задача по oracle 10g
    #39442088
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarockЗапамятовал, я же ленивый)Я бы сказал безмозглый, раз по спецификации не смог написать элементарную реализацию.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
---------
function ListAgg(aTable tp_varchar2_4000_table, aSeparator varchar2 := '|') return varchar2
is
  fRes varchar2(4000);
begin
  for i in 1 .. aTable.count loop
    fRes := fRes || case when i > 1 then aSeparator end || aTable(i);
  end loop;
  return fRes;
end ListAgg;

...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача по oracle 10g
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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