我有兩個表SQL:檢查日期是否存在兩個表
RejectionDate在:
'2016-07-01'
'2016-08-01'
'2016-09-01'
PayDate:
PayDateStart PayDateEnd
'2016-08-01' '2016-09-01'
我需要檢查是否所有日期從第一個表格RejectionDate
落入存儲在另一個表格PayDate
。
我有兩個表SQL:檢查日期是否存在兩個表
RejectionDate在:
'2016-07-01'
'2016-08-01'
'2016-09-01'
PayDate:
PayDateStart PayDateEnd
'2016-08-01' '2016-09-01'
我需要檢查是否所有日期從第一個表格RejectionDate
落入存儲在另一個表格PayDate
。
加入他們?
select rd.*
from RejectionDate rd
inner join PayDate pd
on rd.RejectionDate between pd.PayDateStart and pd.PayDateEnd
以下是您可以每行得到一個標記的方法 - 我猜測這是問題的真正意圖。無論你正在使用的數據庫:
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;
您可以使用類似下面的查詢:
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
回報第一個表的日期在第二個表的開始/結束日期之間的所有記錄的數量。
那麼,什麼是你想從你的樣本數據得到的結果? – Lamak
你使用哪個DBMS? – Jens
也指定預期的結果。 (以及格式化文本。) – jarlh