数据库字符串连接和数字统计问题,比较难一点。求大虾帮忙
时间:2011-12-01
来源:互联网
AA BB CC DD
1 F01 12 15
2 F01 16 18
3 F02 19 21
4 F03 22 25
5 F01 26 28
6 F03 29 31
需要得到如下结果:
EE为:需要分类的数据。
FF为:每行的数据DD-CC+1,然后所有相同的进行统计。
GG为:每行CC-DD,然后连接其他相同的数据。
EE FF GG
F01 10 12-15/16-18/26-28
F02 3 19-21
F03 7 22-25/29-31
以上为调用access数据库,需要用sql语句得出结果。
如有结果,马上结贴。
作者: smallrain97 发布时间: 2011-12-01
作者: qianjin036a 发布时间: 2011-12-01
select EE=BB, FF=sum(DD-CC+1), GG=SUM(CC-DD) FROM 表 group by BB
作者: ssp2009 发布时间: 2011-12-01
这个结果是什么?就是这么个字符串吗?
作者: qianjin036a 发布时间: 2011-12-01
--只会前两个列,最后一个列好像得写VB函数 select ee=bb, ff=sum(dd-cc+1) from tb group by bb
作者: pengxuan 发布时间: 2011-12-01
--------------------------------------------------------------------------------------------------------------
模块中定义函数:
Public Function GroupConcat(sColumn As String, sTable As String, Optional sCriteria As String, Optional sDelimiter As String = ",")
On Error GoTo ErrHandler
Dim rs As New ADODB.Recordset
Dim sSQL As String
Dim sResult As String
sResult = ""
sSQL = "select " & sColumn & " from " & sTable
If sCriteria <> "" Then
sSQL = sSQL & " where " & sCriteria
End If
rs.Open sSQL, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
Do While Not rs.EOF
If sResult <> "" Then
sResult = sResult & sDelimiter
End If
sResult = sResult & rs.Fields(0).Value
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
GroupConcat = sResult
Exit Function
ErrHandler:
If rs.State <> adStateClosed Then
rs.Close
End If
Set rs = Nothing
GroupConcat = Err.Number & " : " & Err.Description
End Function
---------------------------------------------------------------------------------------
定义表T_Person_Course并插入数据:
编号 Name Course
1 张乐 语文
2 张乐 数学
3 张乐 英语
4 张乐 历史
5 朴正南 韩语
6 朴正南 汉语
7 欧阳南 计算机
8 欧阳南 农牧
9 欧阳南 音乐
-------------------------------------------------------------
查看每个人的主修科目:
SELECT T_Person_Course.Name, GroupConcat('Course','T_Person_Course','Name=' & "'" & Name & "'") AS Courses
FROM T_Person_Course
GROUP BY name;
--------------------------------------------------------------
执行结果:
Name Courses
欧阳南 计算机,农牧,音乐
朴正南 韩语,汉语
张乐 语文,数学,英语,历史
----------------------------------------------------------
作者: pengxuan 发布时间: 2011-12-01
FF为:每行的数据DD-CC+1,然后所有相同的进行统计。
GG为:把每个数字转换为字符串,然后组合起来,格式就是CC-DD/CC-DD这样的。
作者: smallrain97 发布时间: 2011-12-01
12-15/16-18/26-28
这个结果是什么?就是这么个字符串吗?
恩,就是把数字转换为字符串,连接在一起。
作者: smallrain97 发布时间: 2011-12-01
在网上找到的
--------------------------------------------------------------------------------------------------------------
模块中定义函数:
Public Function GroupConcat(sColumn As String, sTable As String, Optio……
这个只是进行单一的统计,因为数据为数字,还要把相同的数字进行计算。
作者: smallrain97 发布时间: 2011-12-01
上面的那个函数值得借鉴,对于数据连接只要用 cstr()函数来转为字符就能借用上面的函数了.
作者: qianjin036a 发布时间: 2011-12-01
作者: ssp2009 发布时间: 2011-12-01
作者: qianjin036a 发布时间: 2011-12-01
获得结果后,再与只计算和的语句连接可得结果.
刚开始学习,比较菜的,能够给个参考么,谢了的先。
作者: smallrain97 发布时间: 2011-12-01
作者: smallrain97 发布时间: 2011-12-01
建表及插入记录 create table tb(AA int,BB varchar(10),CC int,DD int) insert into tb(aa,bb,cc,dd) select 1,'F01',12,15 insert into tb(aa,bb,cc,dd) select 2,'F01',16,18 insert into tb(aa,bb,cc,dd) select 3,'F02',19,21 insert into tb(aa,bb,cc,dd) select 4,'F03',22,25 insert into tb(aa,bb,cc,dd) select 5,'F01',26,28 insert into tb(aa,bb,cc,dd) select 6,'F03',29,31 go 新建模块,输入下列程序: Option Compare Database Public Function GroupConcat(sColumn As String) Dim rs As New ADODB.Recordset Dim sSQL As String Dim sResult As String sResult = "" sSQL = "select cc,dd from tb where bb=""" & sColumn & """" rs.Open sSQL, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly Do While Not rs.EOF If sResult <> "" Then sResult = sResult & "/" End If sResult = sResult & CStr(rs.Fields(0).Value) & "-" & CStr(rs.Fields(1).Value) rs.MoveNext Loop rs.Close Set rs = Nothing GroupConcat = sResult End Function 新建查询,在SQL窗口输入下列查询语句: SELECT tb.BB,sum(DD-CC+1) as FF,GroupConcat(bb) AS GG FROM tb GROUP BY tb.BB;go drop table tb 查询结果 BB FF GG F01 10 12-15/16-18/26-28 F02 3 19-21 F03 7 22-25/29-31
作者: qianjin036a 发布时间: 2011-12-01
这个是用delphi软件编写的软件,调用的acess数据库,所以看能不能用sql语句得到这个结果。
函数建在ACCESS模块里,上面的查询语句由delphi直接拼写并执行就行了.
作者: qianjin036a 发布时间: 2011-12-01
这个用mssql容易实现,你的access,建议去其他数据库问问吧。
我看了下晴天的回复。请问在sql server中是不是也要写函数?
作者: down_login 发布时间: 2011-12-01
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28