有什麼建議嗎?如何使用2列日期列中的一列中的日期進行搜索?
我有一個表tblInstallBase在那裏我必須通過參數WarrantyEnd日期進行搜索,如果日期間落在
MFGWarrantyStartDt1 和MFGWarrantyStartDt2
這是一個正常的保修 或
如果它落在
MFGWarrantyStartDt2和MFGWarrantyExpDt2是ExtendedWarranty
之間有什麼建議嗎?如何使用2列日期列中的一列中的日期進行搜索?
我有一個表tblInstallBase在那裏我必須通過參數WarrantyEnd日期進行搜索,如果日期間落在
MFGWarrantyStartDt1 和MFGWarrantyStartDt2
這是一個正常的保修 或
如果它落在
MFGWarrantyStartDt2和MFGWarrantyExpDt2是ExtendedWarranty
之間SELECT
CASE WHEN @WarrantyEnd BETWEEN MFGWarrantyStartDt2 AND MFGWarrantyExpDt2 THEN 'ExtendedWarranty'
ELSE 'Normal Warranty' END
FROM MyTable
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則是「正常保修」爲第一條件將得到滿足
使用最好的索引使用一個聯盟:
select 'Normal' as TypeOf,* from tblInstallBase
where @givenDate>=MFGWarrantyStartDt1 and @givenDate<=MFGWarrantyStartDt2
union all
select 'extended',* from tblInstallBase
where @givenDate>=MFGWarrantyStartDt2 and @givenDate<=MFGWarrantyExpDt2
只是確保您有MFGWarrantyStartDt1 + MFGWarrantyStartDt2上的索引和MFGWarrantyStartDt2 + MFGWarrantyExpDt2上的索引,並且此查詢應該使用它運行而不是完整的慢速表掃描。 – yyyy 2012-01-31 04:58:54
你想要什麼SQL查詢? – 2012-01-31 04:10:01
嗨,用不同列查詢連接條件?當我執行它必須採取WarrantyDate參數。謝謝 – rakesh 2012-01-31 04:49:14