2014-10-01 73 views
-1

我有2 tables.My第一工作臺具有僅與具有多個單列數據和具有第二 表3柱(成本,開始日期,結束日期)柱(即DATE)只有在table2.date存在於table2.startdate和table2.enddate Intervel之間時,才需要獲取table2.cost值。到2臺之間的數據沒有公共列比較

誰能告訴我查詢上述方案以與SQL

+0

從第二表中選擇費用,其中startdate <=(從第一表中選擇日期)和enddate> =(從第一表中選擇日期) – 2014-10-01 10:34:04

回答

0

從第二表中的每個匹配數據得到記錄一次,就可以加入表:

select 
    t2.cost 
from 
    Table2 t2 
    inner join Table1 t1 on t1.theDate >= t2.startdate and t1.theDate < t2.enddate 

要獲得匹配從第二個表中的記錄只有一次,即使不止一個日期從第一個表匹配,你可以使用exists

select 
    t2.cost 
from 
    Table2 t2 
where 
    exists (
    select * 
    from Table1 t1 
    where t1.theDate >= t2.startdate and t1.theDate < t2.enddate 
) 

注:本人具有u假定startdate是包含性的並且enddate是排他性的,則在>=<運營商的比較中進行比較。如果enddate是包含的,則可以使用<=運算符而不是<,或使用between運算符。