| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1080 人关注过本帖
标题:数据统计查询问题
只看楼主 加入收藏
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
结帖率:94.12%
收藏
 问题点数:0 回复次数:11 
数据统计查询问题
大家节日好!
我的表中,某一列N中存在几种相同字段比如:A、B、C,我想进行某一时段内同时进行A、B、C的分别统计查询。不知能否实现?如何写查询语句?请赐教,谢谢!以下是本人原来写的分别统计查询语句:
Dim sql As String
sql = "select * from 表 where N= '" & Trim(Combo1.Text) & "' and rq between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "# order by rq desc"
rs_feipin.CursorLocation = adUseClient
rs_feipin.open sql, conn, adOpenKeyset, adLockOptimistic
If Not rs_feipin.EOF Then
setgrid
setgridhead
displaygrid
If Combo1.Text = "A" Then
sum8 = 0
rs_feipin.MoveFirst
While Not rs_feipin.EOF
sum8 = sum8 + Val(rs_feipin.Fields(11).Value) ' A总量
rs_feipin.MoveNext
Wend
Text17.Text = Format(sum8, "##.0")
End If
If Combo1.Text = "B" Then
sum9 = 0
rs_feipin.MoveFirst
While Not rs_feipin.EOF
sum9 = sum9 + Val(rs_feipin.Fields(11).Value) 'B总量
rs_feipin.MoveNext
Wend
Text18.Text = Format(sum9, "##.0")
End If
If Combo1.Text = "C" Then
sum10 = 0
rs_feipin.MoveFirst
While Not rs_feipin.EOF
sum10 = sum10 + Val(rs_feipin.Fields(11).Value) 'C总量
rs_feipin.MoveNext
Wend
Text19.Text = Format(sum10, "##.0")
End If

搜索更多相关主题的帖子: 统计 数据 查询 
2007-10-03 11:24
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
[QUOTE]几种相同字段[/QUOTE]
怎么理解?
2007-10-03 11:59
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
收藏
得分:0 
楼上:几种相同字段的意思,就是N列中有若干个A和B和C,把同是A的进行求和,依次B、C也是进行同类求和。例如如下:形式

rq N H
2007-01-02 A 15
2007-02-02 A 100
2007-02-15 B 110
2007-02-18 C 12
2007-02-19 B 150
2007-02-20 C 100

2007-10-03 13:25
一陀屎
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-10-2
收藏
得分:0 
SELECT N, SUM(H) FROM 表名 GROUP BY N

这句SQL就能得到你想要的集合,不用编程

[此贴子已经被作者于2007-10-3 13:43:02编辑过]


老虎不发威,你当我病猫
2007-10-03 13:40
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
收藏
得分:0 
楼上的兄弟:我要的是一次得出某一时间段的分别A、B、C的和,你的sql语句是求H列的总和,请兄弟在帮忙改改。
2007-10-03 21:56
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
rq N H
2007-01-02 A 15
2007-02-02 A 100
2007-02-15 B 110
2007-02-18 C 12
2007-02-19 B 150
2007-02-20 C 100
原始是这样.
那你要的结果是怎么样呢?

我的msn: myfend@
2007-10-03 21:58
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
收藏
得分:0 
我要的计算结果应该是:
A=115
B=260
C=112
2007-10-03 22:02
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
在sql查询分析器执行
[CODE]if object_id('t') is not null
drop table t
go
create table t(
rq datetime,
N char(1),
H int
)
insert t select '2007-01-02','A',15
union all select '2007-02-02','A',100
union all select '2007-02-15','B',110
union all select '2007-02-18','C',12
union all select '2007-02-19','B',150
union all select '2007-02-20','C',100
go[/CODE]


在visual basic里编写代码.
[CODE]Private Sub Command1_Click()
Dim Con As New ADODB.Connection
Dim Rst As New ADODB.Recordset

Con.Open "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=myData;User ID=sa;Password=admin;"

Rst.CursorLocation = adUseClient
Rst.Open "select N,sum(H) AS H from t group by N", Con, adOpenKeyset, adLockReadOnly, adCmdText
While Not Rst.EOF
'在调试窗口输出
Debug.Print Rst.Fields("N").Value & "----" & Rst.Fields("H").Value
Rst.MoveNext
Wend

Rst.Close
Con.Close

Set Rst = Nothing
Set Con = Nothing
End Sub[/CODE]

[此贴子已经被作者于2007-10-3 22:16:10编辑过]


我的msn: myfend@
2007-10-03 22:15
一陀屎
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-10-2
收藏
得分:0 
[QUOTE]楼上的兄弟:我要的是一次得出某一时间段的分别A、B、C的和,你的sql语句是求H列的总和,请兄弟在帮忙改改。[/QUOTE]
你都没试,看来你要恶补SQL语句

数据库
图片附件: 游客没有浏览图片的权限,请 登录注册


语句
图片附件: 游客没有浏览图片的权限,请 登录注册


结果
图片附件: 游客没有浏览图片的权限,请 登录注册


老虎不发威,你当我病猫
2007-10-03 22:22
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
楼上的兄弟..
我已经问你你想要的结果是怎么样..
你是说
A=115
B=260
C=112
..我当然是写成这个..

如果你不是这个意思.
那请你将你想要的完整结果写出来.

我的msn: myfend@
2007-10-03 22:26
快速回复:数据统计查询问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014209 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved