sql 计算的问题

我有一个表。有计时工时和计件工时。总工时=计时工时+计件工时我做了个验证不能大于9.5我有一条记录。sum(总工时)=9.2当我再要录入0.3的时候提示大于9.5但是我分... 我有一个表。有计时工时和计件工时。总工时=计时工时+计件工时
我做了个验证不能大于9.5
我有一条记录。sum(总工时)=9.2
当我再要录入0.3的时候提示大于9.5
但是我分两次录入,0.2和0.1则能录入。
什么问题呢?????
都是float 类型的,会不会有溢出?
select * from 工作记录表,基本设置 c
where(
(
select sum(总工时) from 工作记录表
where 员工编号='?员工编号' and year(日期)=year(getdate()) and
month(日期)=month(getdate()) and day(日期)=day(getdate())
)
+ ?计时工时+?计件工时+?机修时间+?事假小时+?病假小时)> c.工作时间
--问号是获取控件的值。工作时间是9.5
展开
 我来答
hit_lubin
2011-04-14 · TA获得超过7890个赞
知道大有可为答主
回答量:1554
采纳率:100%
帮助的人:2186万
展开全部
您这个语句貌似缺少一些连接条件啊。
(
(
select sum(总工时) from 工作记录表
where 员工编号='?员工编号' and year(日期)=year(getdate()) and
month(日期)=month(getdate()) and day(日期)=day(getdate())
)
+ ?计时工时+?计件工时+?机修时间+?事假小时+?病假小时)
这个结果最后会是一个数值,直接>c的工作时间
而你的C表并没有和工作记录表建立合理的连接啊,只是通过一个大于就够了么?C中只有一行记录?
更多追问追答
追问
C表只有一条数据。
我在sql中计算出的sum(总工时) 是9.2.这个是正确的。
但是当我再控件中输入0.3,并确定时。提示不行
追答
您好,请问以上语法是判断是否大于9.5的语句么?
另外,我还是觉得您缺少连接条件,为什么最后的where您没有工作记录表的员工编号等于传入的员工编号这个条件?
殒尘
2011-04-14 · TA获得超过473个赞
知道小有建树答主
回答量:351
采纳率:0%
帮助的人:391万
展开全部
使用numeric数据类型
计算机不能准确表示小数,
也就是有些小数不能通过 2的负的n次方表示,
所以计算浮点数的时候,只是用一个逼近值来近似代替,
所以一般对浮点数进行等值判断的时候,会这样:
如果a-b<0.000001,则a==b
追问
numeric 小数后面直接省去了。。。
追答
不会吧……可以指定小数位的啊
比如,numeric(18,2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
meenv
2011-04-14 · TA获得超过108个赞
知道小有建树答主
回答量:123
采纳率:0%
帮助的人:97.7万
展开全部
做成触发器!!!!!!
强烈建议

肯定是你写的有问题
要求不大于9.5(<=95)
插入0.3怎么可能报大于9.5???
追问
都是float 类型的,会不会有溢出?
select * from 工作记录表,基本设置 c
where(
(
select sum(总工时) from 工作记录表
where 员工编号='?员工编号' and year(日期)=year(getdate()) and
month(日期)=month(getdate()) and day(日期)=day(getdate())
)
+ ?计时工时+?计件工时+?机修时间+?事假小时+?病假小时)> c.工作时间
--问号是获取控件的值。工作时间是9.5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式