我如何从oracle表中选择缺少的日期

时间:2013-05-27 06:43:33

标签: select

我有一个表emp_attn (emp_name varchar2(30),attn_dt date)值,如

select * from emp_attn;

结果如

EMP_NAME                ATTN_DT        
--------------------    ----------
SAM                     02/05/2013
SAM                 03/05/2013
SAM                 07/05/2013
SAM                 08/05/2013
SAM                 13/05/2013
SAM                 14/05/2013
SAM                 17/05/2013
SAM                 18/05/2013
SAM                 19/05/2013
SAM                 20/05/2013
SAM                 21/05/2013
SAM                 22/05/2013
SAM                 23/05/2013
SAM                 24/05/2013
SAM                 25/05/2013
RAM                     01/05/2013
RAM                 03/05/2013
RAM                 07/05/2013
RAM                 08/05/2013
RAM                 10/05/2013
RAM                 11/05/2013
RAM                 14/05/2013
RAM                 18/05/2013
RAM                 19/05/2013
RAM                 20/05/2013
RAM                 23/05/2013
RAM                 24/05/2013
RAM                 25/05/2013

我需要此表中缺少的attn_dtname

1 个答案:

答案 0 :(得分:0)

您可以使用双表查找缺少的日期。

考虑以下示例

http://sqlfiddle.com/#!4/5cbc7/10

此处测试表有10行。

Select dat from ( SELECT to_char(SYSDATE + LEVEL, 'dd/MM/yyyy')  dat 
FROM DUAL  CONNECT BY LEVEL <= 12 -- You can change as per your date range 
) a where dat not in (select dates from test);

上面的select查询返回给出测试表中不可用日期的结果集。

您可以通过在此查询中传递两个参数来获取错过的日期。

SYSDATE - Give your start date

LEVEL (In where condition) - Give as per your date range.