以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- SQL统计全年累计数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38975) |
||||
-- 作者:sxqq123 -- 发布时间:2013/8/12 16:21:00 -- SQL统计全年累计数据 我用Select 新水_天用量 AS 新水_天用量这种形式实现只加载当月月份数据时的全年累计统计,是不是可行?
感觉表切换速度明显降低,是这个影响的吗? Select Case e.DataCol.Name Case "新水_天用量" Dim d As Double Dim dr As DataRow Dim drs As List(of DataRow) Dim cmd As New SQLCommand cmd.C cmd.CommandText = "Select 新水_天用量 AS 新水_天用量 From {日报} Where 日期 >=\'" & e.DataRow("日期").AddYears(-1).Year & "/12/26\' And 日期 <= \'" & e.DataRow("日期").Year & "/12/25\'" d = cmd.ExecuteScalar() dr = e.DataTable.Find("日期= #" & e.DataRow("日期").AddYears(-1).Year & "/12/26 #") e.DataRow("新水_年用量") = e.DataRow("新水_天用量") dr = e.DataRow drs = e.DataTable.Select("日期 >= #" & e.DataRow("日期").AddYears(-1).Year & "/12/26 # And 日期 <= # " & e.DataRow("日期").Year & "/12/25 #","日期") For i As Integer = 1 To drs.Count - 1 drs(i)("新水_年用量") =drs(i-1)("新水_年用量") + drs(i)("新水_天用量") Next End Select 刚开始学习SQL语句,请大师指教 |
||||
-- 作者:Bin -- 发布时间:2013/8/12 16:23:00 -- 你切换表,就执行这段SQL语句的话肯定比你原来不加载数据的要慢. 除非你是局域网! 否则你切换到服务器通信 外网的话如果服务器真的很好,网速也很快那么也许感觉不到什么 如果数据量大,网速慢.服务器不好. 延迟个0.5秒的话 那么就会明显感觉到卡了.
|
||||
-- 作者:逛逛 -- 发布时间:2013/8/12 18:01:00 -- 你这样做,还是将一年的数据加载到了本地,没有达到你的要求,建议年用量用函数或存储过程返回。 |
||||
-- 作者:有点甜 -- 发布时间:2013/8/12 19:33:00 -- 如3楼上所说,建议直接给数据传sql语句,执行完毕以后返回结果,这样就不需要把数据加载到狐表了。 具体的sql语句的编写,楼主最好上传个例子。
|
||||
-- 作者:sxqq123 -- 发布时间:2013/8/12 19:50:00 --
|
||||
-- 作者:有点甜 -- 发布时间:2013/8/12 20:51:00 -- 做了个简单的例子,楼主参考改一下就好。 |
||||
-- 作者:sxqq123 -- 发布时间:2013/8/13 10:24:00 -- 非常感谢有点甜大师的指导,但水平有限还有点不能理解,能否麻烦大师将每天只有一个数据(即不包括班组)的全年累计统计代码提供一下,我现在试了好多次都不能通过,非常感谢. |
||||
-- 作者:sxqq123 -- 发布时间:2013/8/13 11:23:00 -- 项目采用外部数据源,根据日期只加载当月数据,现想通过SQL语句实现全年累计量的统计,并且保障每天显示统计结果,考虑到每次加载影响速度,计划采用按钮实现年累计统计,请教大师如何编写代码,谢谢。
|
||||
-- 作者:逛逛 -- 发布时间:2013/8/13 11:56:00 -- SELECT SUM(你实际用的列名) AS Expr1 FROM 你实际用的表名 WHERE (你的时间删选列名 BETWEEN \'开始时间\' AND \'截止时间\') |
||||
-- 作者:sxqq123 -- 发布时间:2013/8/13 17:08:00 -- Dim d As Double Dim cmd As New SQLCommand cmd.C cmd.CommandText = "Select sum(当天用量) AS 全年累计量 From {蒸汽消耗} Where 日期 >=\'" & e.DataRow("日期").AddYears(-1).Year & "/12/26\' And 日期 <= \'" & e.DataRow("日期").Year & "/12/25\'" d = cmd.ExecuteScalar()
这一步我会,就是不清楚通过SQL得出每天的蒸汽用量数据后,如何使用高效统计方法得到每天的累计数量。第一楼代码表明通过表datacolchanged已实现,但存在问题是对速度影响较大,现在是想通过按钮实现年累计统计,请教大师如何编写代码,谢谢。 |