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

Код: 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
21.04.2017, 08:46
    #39442015
Я - Lеft jоin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по oracle 10g
saxarock,

Используй меня раз 10 по ИНН и Наименованию
...
Рейтинг: 0 / 0
21.04.2017, 08:47
    #39442017
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по oracle 10g
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
21.04.2017, 08:53
    #39442018
saxarock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по oracle 10g
Elic,

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

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

погугли ODCIAggregate...
...
Рейтинг: 0 / 0
21.04.2017, 10:43
    #39442088
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по oracle 10g
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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача по oracle 10g / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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