將其中日期篩選條件去除或比較條件去除就能完整顯示?
樓主的SQL代碼基本上沒有大的毛病。以下寫法會更加規范一些(為子查詢表取一個別名):
select t.* from
(select 完成數/合同數 as 完成百分比,*
from 生產記錄表
where 生產日期 between 日期1 and 日期2) t
where t.完成百分比=1
運行這段代碼系統會要求輸入日期1和日期2,然后就會返回結果。
語句出錯的原因是:生產記錄表的“合同數”字段下存在為0的值,用“完成數”除以0,當然就會出錯。
解決辦法:
首先必須確保字段“完成數”和“合同數”的數據類型必須是數字并且“合同數”不應為0
將生產記錄表中所有“合同數”為0值修改為大于0,或者刪除“合同數”為0的記錄,這樣運行以上sql語句就不會出錯了;
如果一定要允許“合同數”可以為0,則可以使用IIF函數對“合同數”為0的值進行特別處理(下面代碼處理為百分百完成,因為零任務不用干就已經完成)
select t.* from
(select IIF(合同數=0,1,完成數/合同數) as 完成百分比,*
from 生產記錄表
where 生產日期 between 日期1 and 日期2) t
where t.完成百分比=1
當然你也可以處理為0或其他什么的,那就要看如何理解了。以下處理為文本“未知百分比”
select t.* from
(select IIF(合同數=0,'未知百分比',完成數/合同數) as 完成百分比,*
from 生產記錄表
where 生產日期 between 日期1 and 日期2) t
where t.完成百分比='1'