Как заполнить календарь в базе данных Oracle и присоединить его к списку имен из другой таблицы - PullRequest
0 голосов
/ 18 февраля 2019

Я не уверен, возможно ли это, но ... У меня есть список имен из таблицы в Oracle DB

Select Staff_Name
From Staff_List

Что я хотел бы сделать, это создать календарь ивключите его так, чтобы каждое имя отображалось в столбце A, а дни текущего года в столбце B. Следовательно, каждое имя будет отображаться 365 раз в столбце A, для каждого дня года в столбце B.

IПонятия не имею, как ...

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Для текущего года (потому что не каждый год имеет 365 дней, верно?):

SQL> with
  2  staff_list (staff_name) as
  3    (select 'Little' from dual union all
  4     select 'Foot'   from dual
  5    ),
  6  calendar (c_date) as
  7    (select trunc(sysdate, 'yyyy') + level - 1
  8     from dual
  9     connect by level <= add_months(trunc(sysdate, 'yyyy'), 12) - trunc(sysdate, 'yyyy')
 10    )
 11  select s.staff_name, c.c_date
 12  from staff_list s cross join calendar c
 13  order by c.c_date, s.staff_name;

STAFF_ C_DATE
------ ----------
Foot   01.01.2019
Little 01.01.2019
Foot   02.01.2019
Little 02.01.2019
Foot   03.01.2019
Little 03.01.2019
Foot   04.01.2019
Little 04.01.2019
Foot   05.01.2019
Little 05.01.2019

snip

Foot   30.12.2019
Little 30.12.2019
Foot   31.12.2019
Little 31.12.2019

730 rows selected.

SQL>
0 голосов
/ 18 февраля 2019

Попробуйте это:

select staff_name, dt from staff_list 
cross join (select (TRUNC(SYSDATE,'YEAR')-1) + level as dt from dual connect by level <= ADD_MONTHS(TRUNC(SYSDATE,'YEAR'),12)-TRUNC(SYSDATE,'YEAR'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...