2013-05-27 45 views
-1

我有一個表emp_attn (emp_name varchar2(30),attn_dt date)值一樣如何我可以選擇從Oracle表

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

+0

什麼是結果? – TecHunter

+0

你的意思是'失蹤'? –

+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. 
+0

您好先生Dhinakaran,我想與emp_name,日期(缺少收件人日期 – user2423923

+0

在您的問題有兩個不同的員工姓名。你想顯示與這兩名員工的記錄失蹤日期。例如,15/15/2013-17/05/2013記錄不可用。所以你需要15/05/2013 RAM,15/05/2013 SAM像智者一樣到17歲。對嗎? – Dhinakar