|
下面的sql语句,我验证下来,发现问题出在
INT(签收时间)>理论签收时间
请问如果这两个字段当中有空值的,该怎么写才能避免运行时报错?
select *,iif(完成日期和时间 is null,int(揽件时间),int(完成日期和时间)) as 完成日期,
iif(说明 in("破损","遗失","暂报理赔"),"超时",iif(说明="转寄件","妥投",iif(说明 in("退件","拒收"),"退件",iif(揽件时间 is null,"未揽件",iif(签收时间 is null,"在途",iif(INT(签收时间)>理论签收时间,iif(说明 in("A","B","C","D"),"妥投","超时"),"妥投")))))) as 订单状态,
iif(订单状态="妥投","Y",iif(订单状态="超时","N",iif (订单状态="在途",iif(说明 in("A","B","C","D"),"Y","N"),订单状态))) as [Y/N妥投],
iif(DAY(完成日期)<25,YEAR(完成日期)&"年"&MONTH(完成日期)&"月",iif(MONTH(完成日期)=12,YEAR(完成日期)+1&"年1月",YEAR(完成日期)&"年"&MONTH(完成日期)+1&"月")) as 结算月 from
(select * from [D:\宝尊\物流时效信息(已签收)\1506\物流时效信息(已签收)-申通1506.xlsx].[已签收$A1:L] union all
select * from [D:\宝尊\物流时效信息(已签收)\1506\物流时效信息(已签收)-申通1506.xlsx].[退回等异常件$A1:L] union all
select * from [D:\宝尊\物流时效信息(已签收)\1506\物流时效信息(已签收)-圆通1506.xlsx].[已签收$A1:L] union all
select * from [D:\宝尊\物流时效信息(已签收)\1506\物流时效信息(已签收)-圆通1506.xlsx].[退回等异常件$A1:L] union all
select * from [D:\宝尊\物流时效信息(已签收)\1506\物流时效信息(已签收)-EMS1506.xlsx].[已签收$A1:L] union all
select * from [D:\宝尊\物流时效信息(已签收)\1506\物流时效信息(已签收)-EMS1506.xlsx].[退回等异常件$A1:L] union all
select * from [D:\宝尊\物流时效信息(已签收)\1506\物流时效信息(已签收)-顺丰1506.xlsx].[已签收$A1:L] union all
select * from [D:\宝尊\物流时效信息(已签收)\1506\物流时效信息(已签收)-顺丰1506.xlsx].[退回等异常件$A1:L] union all
select * from [D:\宝尊\快递公司(未签收)\6.19-物流时效信息-申通1506.xlsx].[sheet1$A6:L] union all
select * from [D:\宝尊\快递公司(未签收)\6.19-物流时效信息-圆通1506.xlsx].[sheet1$A6:L] union all
select * from [D:\宝尊\快递公司(未签收)\6.19-物流时效信息-EMS1506.xlsx].[sheet1$A6:L] union all
select * from [D:\宝尊\快递公司(未签收)\6.19-物流时效信息-顺丰1506.xlsx].[sheet1$A6:L] union all
select * from [D:\宝尊\快递公司(未签收)\6.19-物流时效信息-顺丰1506.xlsx].[转寄件$A1:L] )
where 完成日期和时间 between #2015-5-25# and #2015-6-25#
|
|