我有一个视图,显示每列卡车条目的信息:ENTERED
(datetime
)。基于此,我制作了一份Crystal报表,以显示每天的条目数:简单分组为ENTERED
(按天)和摘要COUNT(Entered)
。
通过命令
可以在SQL Server中实现相同的效果SELECT
convert(date, ENTERED),
count(ENTERED)
FROM
View
GROUP BY
convert(date, ENTERED)
您可以看到结果(在Crystal Reports的左侧,从SQL Server开始 - 忽略最新的行,因为数据在当天不断更新) - 它们是相同的。
但现在我知道视图中有一些双重因素,所以我需要一个明显的计数。在Crystal中,只需更改摘要,在T-SQL中它就是
SELECT
convert(date, ENTERED),
count (distinct ENTERED)
FROM
View
GROUP BY
convert(date, ENTERED)
这是一个很大的惊喜:
不同的计数数字是不同的 - 不是很多但是不同。有谁知道为什么以及如何解决它(当然哪个版本是正确的)?
答案 0 :(得分:0)
好的,经过一番研究后我发现差异背后的原因在于......毫秒。这很简单 - 当SQL服务器保留整个" tail"时,Crystal会将日期时间的一部分截断为小时,分钟和秒。毫秒 因此,虽然Crystal的版本是错误的,但在我的情况下,我必须修复事实(SQL语句)以匹配报告
SELECT convert (date, ENTERED),
count(distinct dateadd(millisecond, -datepart(millisecond, ENTRANCE), ENTRANCE))
FROM View1
GROUP by convert (date, ENTERED)
如何做相反的事情(在Crystal中用SQL显示正确的数字)仍然让我望而却步。
答案 1 :(得分:0)
不确定为什么它显示不同,但我建议使用不同的,并在水晶本地计数而不是查询。
SELECT
date,
ENTERED
FROM
View
在水晶报表中使用此功能,然后使用水晶报表中的可用功能获取distinct
和count
值