
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 展开
我做了个验证不能大于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 展开
展开全部
您这个语句貌似缺少一些连接条件啊。
(
(
select sum(总工时) from 工作记录表
where 员工编号='?员工编号' and year(日期)=year(getdate()) and
month(日期)=month(getdate()) and day(日期)=day(getdate())
)
+ ?计时工时+?计件工时+?机修时间+?事假小时+?病假小时)
这个结果最后会是一个数值,直接>c的工作时间
而你的C表并没有和工作记录表建立合理的连接啊,只是通过一个大于就够了么?C中只有一行记录?
(
(
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您没有工作记录表的员工编号等于传入的员工编号这个条件?
展开全部
使用numeric数据类型
计算机不能准确表示小数,
也就是有些小数不能通过 2的负的n次方表示,
所以计算浮点数的时候,只是用一个逼近值来近似代替,
所以一般对浮点数进行等值判断的时候,会这样:
如果a-b<0.000001,则a==b
计算机不能准确表示小数,
也就是有些小数不能通过 2的负的n次方表示,
所以计算浮点数的时候,只是用一个逼近值来近似代替,
所以一般对浮点数进行等值判断的时候,会这样:
如果a-b<0.000001,则a==b
追问
numeric 小数后面直接省去了。。。
追答
不会吧……可以指定小数位的啊
比如,numeric(18,2)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做成触发器!!!!!!
强烈建议
肯定是你写的有问题
要求不大于9.5(<=95)
插入0.3怎么可能报大于9.5???
强烈建议
肯定是你写的有问题
要求不大于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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询