Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 没有按预期工作的条款_Sql Server_Compare_Having - Fatal编程技术网

Sql server 没有按预期工作的条款

Sql server 没有按预期工作的条款,sql-server,compare,having,Sql Server,Compare,Having,我有以下声明 select pkid from AttendancePosting where datename(dw,AttDate) = 'Sunday' and empid=4 and attdate='2015-12-13' group by PKId,timeout --having 9=9 having cast(sum((datepart(minute, timeout)))/2 as float )+''=cast(datepart(minute,timeout) as f

我有以下声明

select pkid 
from AttendancePosting 
where datename(dw,AttDate) = 'Sunday' and empid=4 and attdate='2015-12-13' 
group by PKId,timeout
--having 9=9
having cast(sum((datepart(minute, timeout)))/2 as float )+''=cast(datepart(minute,timeout) as float) +''
问题是

having cast(sum((datepart(minute, timeout)))/2 as float )+''=cast(datepart(minute,timeout) as float) +''
不工作。
cast(sum((datepart(minute,timeout)))/2作为float)
cast(datepart(minute,timeout)作为float)
带来相同的值,但select语句仍然没有获取任何记录,两者都返回
9

我已经这样检查过了

select pkid 
from AttendancePosting 
where datename(dw,AttDate) = 'Sunday' and empid=4 and attdate='2015-12-13' 
group by PKId,timeout
having 9=9

它带来的记录,任何帮助都将不胜感激。

首先,您的语句
datepart(minute,timeout)/2将返回一个整数。您可以使SQL Server变得更精确,方法是像这样更精确
datepart(分钟,超时)/2.


其次,浮点数是一种近似值。最好使用
ROUND()
并指定您认为合适的小数位数。例如:
round(sum((datepart(minute,timeout)))/2.0,3)

HAVING
子句中
+'
的目的是什么?我删除了它仍然不起作用我认为
group by
只返回一条记录和一个超时,因此,当两次偏差时,值不相等。我认为您的第一步应该是避免使用
浮点值,因为它们不精确,即使它们看起来应该完全相等,也可能不完全相等。