如何在SSRS报表中计算HH:MM格式时间的平均值
解决SSRS中HH:MM格式时间平均值的展示问题
嘿,我来帮你搞定这个需求!你当前的SQL逻辑是对的——把时间转成秒数计算平均值再转回时间,这是计算时间平均值的正确方式,现在只需要调整最终的展示格式,让它只显示小时和分钟就行,给你两种方案选:
方案1:在SQL查询中直接输出HH:MM格式
你可以修改查询语句,用FORMAT函数把计算后的时间直接格式化为HH:mm,这样返回的结果就是你想要的小时分钟格式,不需要在SSRS里额外处理:
SELECT O.ORDERNUM, FORMAT( CAST(DATEADD(s, AVG(CAST(DATEDIFF(s, '00:00', CAST(DROPTIME AS time(0))) AS INT)), '00:00') AS time(0)), 'HH:mm' ) AS ATIME FROM ORDE_ O WHERE O.CLIENTNUM='HLEX1' GROUP BY O.ORDERNUM -- 这里要注意:因为用了AVG聚合函数,必须按ORDERNUM分组,不然会报错哦
如果你的SQL Server版本不支持FORMAT函数(比如2012之前的版本),可以用CONVERT配合风格码,或者拼接小时和分钟:
SELECT O.ORDERNUM, CONVERT(varchar(5), CAST(DATEADD(s, AVG(CAST(DATEDIFF(s, '00:00', CAST(DROPTIME AS time(0))) AS INT)), '00:00') AS time(0)), 108 ) AS ATIME FROM ORDE_ O WHERE O.CLIENTNUM='HLEX1' GROUP BY O.ORDERNUM
方案2:在SSRS报表中设置格式(不修改SQL)
如果你不想改动SQL,也可以直接在SSRS里调整文本框的显示格式:
- 找到展示
ATIME字段的文本框,右键点击它,选择「文本框属性」 - 切换到「数字」选项卡
- 在「类别」列表里选择「时间」,然后在右侧的格式里选「HH:mm」;或者直接在「自定义」输入框里手动输入
HH:mm - 点击确定后,报表就会自动把时间值显示为小时和分钟的格式,自动隐藏秒数
两种方案都能达到你想要的效果,选哪个看你的习惯就好~
内容的提问来源于stack exchange,提问作者A.Goutam
相关产品推荐
相关产品推荐

