Oracle- Создать список недель для каждого сотрудника - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь запросить список дат (понедельник каждой недели) для каждого отдельного сотрудника, а затем объединить другие таблицы на нем.Я могу создать список дат, используя

SELECT TRUNC (SYSDATE - ROWNUM,'WW') dt
FROM DUAL CONNECT BY ROWNUM < sysdate-to_date('1-JAN-17')

Но как я могу получить этот список для каждого сотрудника в таблице:

SELECT Employee from table1

Это приведет к тому, что таблица будет иметь number of records = number of weeks * number of employee.

1 Ответ

0 голосов
/ 26 апреля 2018

Вот пример, основанный на таблице EMP Скотта, в то время как DATES представляют понедельники этого (2018) года;здесь порядковый номер понедельника = 1;вам может потребоваться изменить это, если оно отличается от того, где вы находитесь.Набор результатов ограничен сотрудниками, чье имя начинается с буквы «М» (чтобы список не был слишком длинным).

SQL> alter session set nls_date_format = 'dd.mm.yyyy';

Session altered.

SQL> alter session set nls_date_language = 'english';

Session altered.

SQL>
SQL> with dates as
  2    (select trunc(sysdate, 'yyyy') + level - 1 datum
  3     from dual
  4     connect by level <= trunc(sysdate) - trunc(sysdate, 'yyyy') + 1
  5    )
  6  select e.ename, d.datum
  7  from dates d cross join emp e
  8  where to_char(d.datum, 'd') = '1'    --> Monday in Croatia
  9    and substr(e.ename, 1, 1) = 'M'
 10  order by e.ename, d.datum;

ENAME      DATUM
---------- ----------
MARTIN     01.01.2018
MARTIN     08.01.2018
MARTIN     15.01.2018
MARTIN     22.01.2018
MARTIN     29.01.2018
MARTIN     05.02.2018
MARTIN     12.02.2018
MARTIN     19.02.2018
MARTIN     26.02.2018
MARTIN     05.03.2018
MARTIN     12.03.2018
MARTIN     19.03.2018
MARTIN     26.03.2018
MARTIN     02.04.2018
MARTIN     09.04.2018
MARTIN     16.04.2018
MARTIN     23.04.2018
MILLER     01.01.2018
MILLER     08.01.2018
MILLER     15.01.2018
MILLER     22.01.2018
MILLER     29.01.2018
MILLER     05.02.2018
MILLER     12.02.2018
MILLER     19.02.2018
MILLER     26.02.2018
MILLER     05.03.2018
MILLER     12.03.2018
MILLER     19.03.2018
MILLER     26.03.2018
MILLER     02.04.2018
MILLER     09.04.2018
MILLER     16.04.2018
MILLER     23.04.2018

34 rows selected.

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...