-1

我有一个表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

4

1 回答 1

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);

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

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

SYSDATE - Give your start date

LEVEL (In where condition) - Give as per your date range.
于 2013-05-27T08:54:20.043 回答