2012-01-31 45 views
0

有什麼建議嗎?如何使用2列日期列中的一列中的日期進行搜索?

我有一個表tblInstallBase在那裏我必須通過參數WarrantyEnd日期進行搜索,如果日期間落在

MFGWarrantyStartDt1 和MFGWarrantyStartDt2

這是一個正常的保修 或

如果它落在

MFGWarrantyStartDt2和MFGWarrantyExpDt2是ExtendedWarranty

之間
+0

你想要什麼SQL查詢? – 2012-01-31 04:10:01

+0

嗨,用不同列查詢連接條件?當我執行它必須採取WarrantyDate參數。謝謝 – rakesh 2012-01-31 04:49:14

回答

0
SELECT 
    CASE WHEN @WarrantyEnd BETWEEN MFGWarrantyStartDt2 AND MFGWarrantyExpDt2 THEN 'ExtendedWarranty' 
    ELSE 'Normal Warranty' END 
FROM MyTable 
0

select 
case when @WarrantyEnd between MFGWarrantyStartDt1 and MFGWarrantyStartDt2 then 'Normal Warranty' 
when @WarrantyEnd between MFGWarrantyStartDt2 and MFGWarrantyExpDt2 then 'Extended Warranty' 
else 'Expired' end 
from @warantee 

注意,如果@WarrantyEnd落在MFGWarrantyStartDt2則是「正常保修」爲第一條件將得到滿足

1

使用最好的索引使用一個聯盟:

select 'Normal' as TypeOf,* from tblInstallBase 
where @givenDate>=MFGWarrantyStartDt1 and @givenDate<=MFGWarrantyStartDt2 
union all 
select 'extended',* from tblInstallBase 
where @givenDate>=MFGWarrantyStartDt2 and @givenDate<=MFGWarrantyExpDt2 
+0

只是確保您有MFGWarrantyStartDt1 + MFGWarrantyStartDt2上的索引和MFGWarrantyStartDt2 + MFGWarrantyExpDt2上的索引,並且此查詢應該使用它運行而不是完整的慢速表掃描。 – yyyy 2012-01-31 04:58:54