我这个是做的一个日报表,根据时间查询出现了bug,就是如果10号的没有排完,第二天会接着排代码如下:
select top 16 from(select gooaname,sum(counts) from 表) b where IdateT >=(select top 1 MAX(IdateT) from (select top 1 goodname,IdateT from 表 where 1=1 and IdateT >= '2013/12/02' and IdateT <= '2017/05/03' group by IdateT,goodname order by IdateT) a)

SqlServer分页查询根据时间为条件出现了bug
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-05 20:08关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题可能是因为在SQL Server中,日期和时间类型的字段不能直接进行比较。为了处理这种情况,你可以使用函数
DATEADD来将两个日期或时间值转换为相同格式,并且使用DATEDIFF来计算它们之间的差异。这是一个示例:
SELECT TOP 16 [GoodName], SUM([Counts]) AS [Total Counts] FROM ( SELECT [GoodName], IdateT, DATEADD(day, DATEDIFF(day, 0, IdateT), 0) AS [NewDateT] FROM [Table] t WHERE IdateT >= '2013-12-02' AND IdateT <= '2017-05-03' GROUP BY [GoodName], IdateT ORDER BY [NewDateT] ) b WHERE [NewDateT] BETWEEN '2013-12-02' AND '2017-05-03'在这个例子中,我们首先创建了一个临时表,其中包含原始日期和时间数据。然后,我们使用
DATEADD函数将每个日期转换为新的日期格式(这里我们假设新日期是从旧日期加上一天开始)。最后,我们检查新的日期是否在指定的时间范围内。请注意,这只是一个基本的示例。你可能需要根据你的具体需求对其进行调整。例如,如果你想要按照不同的时间段来分页,你可能需要修改
GROUP BY子句以包含更多的列。解决 无用评论 打赏 举报