高难度的SQL语句,请各位SQL语句高手指点(100分)

  • 主题发起人 主题发起人 你若有情
  • 开始时间 开始时间

你若有情

Unregistered / Unconfirmed
GUEST, unregistred user!
有一这样的SQL语句
Select 生产数量/生产人数 as 生产效率 from 生产单 Where 生产日期={ fn CurDate()}
但是有事当生产人数为0时执行就会发生错误。
我想这样,当"生产人数"为0时呢生产效率显示的就为"0",或者显示为"请输入今日生产人数"
有没有办法这样呢
 
不知你用的是什么数据库,如杲是ORACLE 则可用两个SQL语句求和方式或得到你所需结杲:
Select 生产数量/生产人数 as 生产效率 from 生产单
Where 生产日期={ fn CurDate()} and 生产人数<>0
union all
Select 生产人数 as 生产效率 from 生产单
Where 生产日期={ fn CurDate()} and 生产人数=0
 
Select case 生产人数 when 0 then 0 else 生产数量/生产人数 end as 生产效率
from 生产单 Where 生产日期={ fn CurDate()}

这是SQL SERVER 的写法
 
对,SQL Server中的Case..when要常用,挺好用的
 
To :jiabingli
我用的是SQL Server 2000,可以吗?
TO:twos
Case...When语句能帮我写出来吗?是不是像jiabingli说的那样,我试试

 
Select case 生产人数
when 0 then 0
when null then null
else 生产数量/生产人数
end as 生产效率
from 生产单
Where 生产日期={ fn CurDate()}
 
同意楼上的写法,没有问题
 
问题解决了,非常感谢大家
david_lsh的方法比较好
 
多人接受答案了。
 
对不起. 我有不同看法.

我也认为 David_lsh 大侠的 办法 很好.

但是, 我用 SQL Server 6.5 + WinNT 4.0 服务器 + Win2K +delphi 5.0 +Bde 工作站

在有 Null 的字段,

比值 会是空的. 而用 ODBC 和 ADO 的方法 , 却说不合法 . 会出 除 零 错.

我认为, 和 大家用的 联的 方法 有关系 .

而由系统 做的, 可能要比我们 用 SQL 实现出来的 快一点, 是吧?
 

Similar threads

S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
后退
顶部