有什么建议吗?
我有一个表tblInstallBase,我必须传递参数WarrantyEnd date来搜索它是否介于日期之间
MFGWarrantyStartDt1 和MFGWarrantyStartDt2
这是正常保修 或如果介于
之间MFGWarrantyStartDt2和MFGWarrantyExpDt2它是ExtendedWarranty
答案 0 :(得分:1)
使用union来获得最佳索引用法:
select 'Normal' as TypeOf,* from tblInstallBase
where @givenDate>=MFGWarrantyStartDt1 and @givenDate<=MFGWarrantyStartDt2
union all
select 'extended',* from tblInstallBase
where @givenDate>=MFGWarrantyStartDt2 and @givenDate<=MFGWarrantyExpDt2
答案 1 :(得分:0)
SELECT
CASE WHEN @WarrantyEnd BETWEEN MFGWarrantyStartDt2 AND MFGWarrantyExpDt2 THEN 'ExtendedWarranty'
ELSE 'Normal Warranty' END
FROM MyTable
答案 2 :(得分: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上,那么它将是“正常保修”,因为第一个条件将得到满足