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

Alexggg99
Дата: 21.03.2011 22:54:49
Есть запрос

 select t.clnt_name,
        t.clnt_law_address,
        t.clnt_phone,
        t.clnt_email,
        (select first_name.prsn_first_name
           from (select *
                   from dic_person t2
                  where t2.clnt_id = t.clnt_id
                  order by t2.prsn_id) first_name
          where rownum <= 1) first_name,
        (select third_name.prsn_third_name
           from (select *
                   from dic_person t2
                  where t2.clnt_id = t.clnt_id
                  order by t2.prsn_id) third_name
          where rownum <= 1) third_name
   from dic_client t;

пытаюсь его исполнить сообщение T.CLNT_ID invalid indentifier
Пытаюсь для каждого клиента извлечь контактное лицо с самым маленьким id
Кто просветит почему не работает?
__vvp_
Дата: 21.03.2011 23:03:51
Alexggg99,

Уровень вложенности подзапроса большой.

STFF keep dense_rank last/first
AmKad
Дата: 21.03.2011 23:15:26
Alexggg99,

Где-то мы тебя уже видели.
Alexggg99
Дата: 23.03.2011 08:53:12
Я понял спасибо за совет, но всё же почему данный запрос выбирает набор id, когда мне нужен только самый меньший
select first_value(t.prsn_id) over(order by t.prsn_id)
  from dic_person t
 where t.clnt_id = 2

Пытался сделать так

select first_value(t.prsn_id) over(order by t.prsn_id)
  from dic_person t
 where t.clnt_id = 2
   and rownum <= 1

выбирает не верный id
Как с помощью first_value выбрать только одно значение?
__vvp_
Дата: 23.03.2011 09:08:46
Alexggg99
Я понял спасибо за совет


Ничего ты не понял.

Ищи KEEP DENSE_RANK