繁体   English   中英

Oracle-为每位员工创建星期列表

[英]Oracle- Create list of weeks for each employee

我正在尝试查询每个员工的日期列表(每周的星期一),然后加入其他表。 我可以使用创建日期列表

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

这是一个基于Scott的EMP表的示例,而DATES表示今年(2018年)的星期一; 在这里,星期一的序数= 1; 如果您所在的位置不同,则可能需要更改它。 结果集仅限于名称以字母“ M”开头的员工(这样列表就不会太长)。

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM