Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите написать select / 7 сообщений из 7, страница 1 из 1
25.01.2019, 11:11
    #39764811
Anitik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать select
Добрый день!
Помогите, пожалуйста, написать select по следующим требованиям:
- есть три таблички: клиенты, купленное ими оборудование и обращения клиентов в тех.поддержку.
- в итоге хочется увидеть ответ, состоящий из трех блоков: 1) клиент 2) купленное оборудование 3) обращения в ТП
- при этом количество строк в блоках должно соответствовать реальному, т.е. в первом блоке одна строчка по клиенту, во втором блоке пять строчек по оборудованию, в третьем блоке три строчки с обращениями в тех.поддержку
- допускается создание любого количества вспомогательных таблиц
- версия Oracle 11.2.0.4.0

Пример (подчерки вместо пробелов):

CLNT_ID CLNT_OBOR___ CLNT_RQST
1_______ оборудование 1 обращение 1
________ оборудование 2 обращение 2
________ оборудование 3 обращение 3
________ оборудование 4
________ оборудование 5

Спасибо!
...
Рейтинг: 0 / 0
25.01.2019, 11:25
    #39764826
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать select
Anitik,

Код: plsql
1.
2.
3.
4.
select к.*,
  cursor(select * from оборудование о where о.клиент=к.клиент) оборудование,
  cursor(select * from обращение о where о.клиент=к.клиент) обращение
from клиент к;
...
Рейтинг: 0 / 0
25.01.2019, 11:29
    #39764830
Anitik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать select
-2-, спасибо большое за совет!

Получилось, но выдается в виде CLNT_ID cursor cursor

А надо бы в явном виде получить все данные (как в примере).
...
Рейтинг: 0 / 0
25.01.2019, 11:37
    #39764834
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать select
Anitik,

Мессир, обычно начинают с такого: 20962769

покажите что написали сами, сделайте testcase
...
Рейтинг: 0 / 0
25.01.2019, 12:07
    #39764850
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать select
Anitik,
left outer join + lag
...
Рейтинг: 0 / 0
25.01.2019, 13:01
    #39764904
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать select
Anitik,

вброс
Код: 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.
  1  with cl as (
  2  select 1 client_id from dual union all
  3  select 2 client_id from dual union all
  4  select 3 client_id from dual )
  5  ,obor as (
  6  select 1 client_ref,'Комр' CLNT_OBOR from dual union all
  7  select 1 client_ref,'Монітор' CLNT_OBOR from dual union all
  8  select 2 client_ref,'Мишь' CLNT_OBOR from dual)
  9  ,RQST as (
 10  select 1 client_ref,'О100' CLNT_RQST from dual union all
 11  select 2 client_ref,'О200' CLNT_RQST from dual union all
 12  select 2 client_ref,'О201' CLNT_RQST from dual)
 13  ,u as (
 14  select 'O' f,client_id,CLNT_OBOR x,rownum r from cl,obor where client_ref(+)=client_id
 15  UNION ALL
 16  select 'R' f,client_id,CLNT_RQST x,rownum r from cl,rqst where client_ref(+)=client_id
 17  )
 18  select
 19   lag(cast(null as number),1,client_id)
 20       over (partition by client_id order by nvl(CLNT_OBOR,CLNT_RQST)) cl_id
 21  ,CLNT_OBOR
 22  ,CLNT_RQST
 23  from u
 24  pivot (max(x) for f in ('O' as CLNT_OBOR,'R' as CLNT_RQST))
 25* order by client_id,nvl(CLNT_OBOR,CLNT_RQST)
SQL> /

     CL_ID CLNT_OB CLNT_RQ
---------- ------- -------
         1 Комр    О100
           Монітор
         2 Мишь    О201
                   О200
         3



.....
stax
...
Рейтинг: 0 / 0
25.01.2019, 15:11
    #39765015
Anitik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать select
Нереальная благодарность всем ответившим, а особенно Stax!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите написать select / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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