2017-03-01 28 views
-4

我有兩個表SQL:檢查日期是否存在兩個表

RejectionDate在:

'2016-07-01' 
'2016-08-01' 
'2016-09-01' 

PayDate

PayDateStart  PayDateEnd 
'2016-08-01' '2016-09-01' 

我需要檢查是否所有日期從第一個表格RejectionDate落入存儲在另一個表格PayDate

+0

那麼,什麼是你想從你的樣本數據得到的結果? – Lamak

+1

你使用哪個DBMS? – Jens

+2

也指定預期的結果。 (以及格式化文本。) – jarlh

回答

0

加入他們?

select rd.* 
from RejectionDate rd 
inner join PayDate pd 
on rd.RejectionDate between pd.PayDateStart and pd.PayDateEnd 
1

以下是您可以每行得到一個標記的方法 - 我猜測這是問題的真正意圖。無論你正在使用的數據庫:

select r.*, 
     (case when exists (select 1 
          from paydates pd 
          where r.rejectiondate between p.PayDateStart and p.PayDateEnd 
         ) 
      then 1 else 0 
     end) as InRangeFlag 
from rejections r; 
0

您可以使用類似下面的查詢:

SELECT COUNT(*) AS all_dates, COUNT(t2.PayDateEnd) AS all_between_dates 
FROM Rejections AS t1 
LEFT JOIN PayDate AS t2 ON t1.RejectionDate BETWEEN t2.PayDateStart AND t2.PayDateEnd 

第一COUNT返回的第一個表中的所有記錄數,而第二COUNT回報第一個表的日期在第二個表的開始/結束日期之間的所有記錄的數量。

Demo here

相關問題