CftClub.ru
Клуб специалистов ЦФТ-Банк

Помогите написать запрос

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеВт Дек 10, 2013 09:58   Помогите написать запрос Ответить с цитатой
Полезность: Нет оценки
требуется в существующее преставление в кредитах добавить колонку с показателем.

Показатель - это количество различных дат в фактических операциях.


т.е. упрощенно выглядит так


Код:
select A1_2.id
, (select count (1) from
(select distinct b1.C_DATE
from Z#VID_OPER_DOG b2, Z#FACT_OPER b1
where b1.COLLECTION_ID=A1_2.C_LIST_PAY and b1.C_OPER=b2.id
and b2.C_BUS_PROCESS = /*PL+*/::[BUS_PROCESS](CODE = 'ВЫНОС')/*PL-*/ and
(b1.C_DATE >=SYSDATE-to_number(/*PL+*/SYS_CONTEXT(user_context,'PLAN_COUNT_DAY_VYNOS')/*PL-*/))
))
from Z#PR_CRED A1_2


однако этот запрос не работает ORA-00904: "A1_2"."C_LIST_PAY": недопустимый идентификатор. Видимо из-за двух уровней вложенности запроса. На ум не приходит хорошего решения задачи. Прошу помочь советом.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Дек 10, 2013 11:05    Ответить с цитатой
Полезность: 1
В общем, порекомендовал бы дергать функцию из операции - фильтра
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеВт Дек 10, 2013 11:09    Ответить с цитатой
Полезность: Нет оценки
не совсем то что хотел услышать, но спасибо за совет. Может еще кто чего напишет...
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Дек 10, 2013 11:26    Ответить с цитатой
Полезность: Нет оценки
Я когда пытался скомпейлить Ваш пример,
ORA-00904: "A1_2"."C_LIST_PAY":
не получил.

Не понял
select A1_2.id
, (select count (1) from

В вьюхе одна колонка на поле, select a,b from z не катит
или я чего то не вкурил с примера.
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеВт Дек 10, 2013 11:27    Ответить с цитатой
Полезность: Нет оценки
убрал PL+ вставки

Код:
select A1_2.id
, (select count (1) from
(select distinct b1.C_DATE
from Z#VID_OPER_DOG b2, Z#FACT_OPER b1
where b1.COLLECTION_ID=A1_2.C_LIST_PAY and b1.C_OPER=b2.id
and b2.C_BUS_PROCESS = 123 and
(b1.C_DATE >=SYSDATE-123)
))
from Z#PR_CRED A1_2
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеВт Дек 10, 2013 11:43    Ответить с цитатой
Полезность: 2
так?

Код:
select A1_2.id
,(select count(distinct b1.C_DATE)
from Z#VID_OPER_DOG b2, Z#FACT_OPER b1
where b1.COLLECTION_ID=A1_2.C_LIST_PAY and b1.C_OPER=b2.id
and b2.C_BUS_PROCESS = 123 and
(b1.C_DATE >=SYSDATE-123)
)
from Z#PR_CRED A1_2
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеВт Дек 10, 2013 11:58    Ответить с цитатой
Полезность: Нет оценки
То что надо. Спасибо.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru