回覆列表
  • 1 # 使用者6998436758653

    樓主的SQL程式碼基本上沒有大的毛病。以下寫法會更加規範一些(為子查詢表取一個別名):

    select t.* from

    (select 完成數/合同數 as 完成百分比,*

    from 生產記錄表

    where 生產日期 between 日期1 and 日期2) t

    where t.完成百分比=1

    執行這段程式碼系統會要求輸入日期1和日期2,然後就會返回結果。

    語句出錯的原因是:生產記錄表的“合同數”欄位下存在為0的值,用“完成數”除以0,當然就會出錯。

    解決辦法:

    首先必須確保欄位“完成數”和“合同數”的資料型別必須是數字並且“合同數”不應為0

    如果一定要允許“合同數”可以為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"

  • 中秋節和大豐收的關聯?
  • 炮仗花種植方法和時間?