Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分][明细统计汇总]如何设计查询达到这种效果

阿克赛思  发表于:2015-11-24 11:26:20  
复制

这是一个咨询记录的表格,最近想加入汇总功能有点无从下抓的感觉

将明细记录统计后生成统计表 进行累计



就是统计一段时间以内的总的咨询时间和咨询金额(消费)


流水记录表格:


统计结果(要达到的效果):


 

Top
煮江品茶 发表于:2015-11-24 13:08:32
select 编号,姓名,咨询类型,format(咨询日期,"yyyy年mm月") as 咨询月度,sum(单次价格) as 累计消费,count(*) as 咨询次数
from 阁下的表名称
group by 编号,姓名,咨询类型,format(咨询日期,"yyyy年mm月")


阿克赛思 发表于:2015-11-24 14:40:58

这样产生的是多条记录 ,但是我需要的是一个用户 只有一个条目 ,应该如何做 ?



阿克赛思 发表于:2015-11-24 14:44:19

比如说 ,123 的 顾客在  2015.5.5~ 2015.6.1日 的咨询消费总数 是这样的 


123 吧友 123  1200(消费 )  12(累计时间 )



王革 发表于:2015-11-24 15:35:04

要加whre条件



兔斯基 发表于:2015-11-26 17:36:32
顶起,我也有这样的要求!

阿克赛思 发表于:2015-11-28 13:34:38

说一下我自己最终的解决方案(vb6+access 完成),


1)建立了两个查询,一个查询负责获得范围内的用户编号,一个查询负责获得明细

×以下是

2)根据用户编号列表对每个用户进行统计

贴出部分代码(对符合条件的用户编号遍历):


                If ExcuteSql(rctQueryAdvNo, "select * from QueryAdvNo") = True Then
                '////继承过滤器
                    'rctQueryAdvNo.Filter = rctAdv.Filter
                    'Set lvTotal.DataSource = rctQueryAdvNo
                End If
                
                Do While Not (rctQueryAdvNo.EOF Or rctQueryAdvNo.BOF)
                    curCno = rctQueryAdvNo.Fields("编号")
                    If fCno <> curCno Then
                        GetCountAndMoney curCno
                        Debug.Print fCno, curCno, "Change", totalHour, totalMoney
                        fCno = curCno
                        lvTotal.ListItems.Add , , curCno
                        lvTotal.ListItems(lvTotal.ListItems.Count).SubItems(1) = rctQueryAdvNo.Fields("姓名")
                        lvTotal.ListItems(lvTotal.ListItems.Count).SubItems(2) = totalHour
                        lvTotal.ListItems(lvTotal.ListItems.Count).SubItems(3) = totalMoney
                        lvTotal.ListItems(lvTotal.ListItems.Count).SubItems(4) = rctQueryAdvNo.Fields("余额")
                        allMoney = allMoney + totalMoney
                        allSave = allSave + rctQueryAdvNo.Fields("余额")
                    End If
                    

                    rctQueryAdvNo.MoveNext
                Loop
其二(对每个用户进行单独合计,写入变量 total xxx 中):



Do While Not (rctQueryAdvice.EOF Or rctQueryAdvice.BOF)
            i = i + 1

            If i <= rctQueryAdvice.RecordCount Then
            '////////do the counts
            countHour = Val(rctQueryAdvice("A_Hour")) + countHour
            countMoney = Val(rctQueryAdvice("A_Hour")) * Val(rctQueryAdvice("A_Price")) + countMoney
            
            End If
            '///////////
            rctQueryAdvice.MoveNext

Loop

If Not rctQueryAdvice.BOF Then
    rctQueryAdvice.MoveFirst
End If
totalHour = countHour
totalMoney = countMoney
3)累加之后显示于表格,获得结果



似乎 VBA 的写法也差不了太多吧,在论坛上查了一下,单纯用查询似乎办不到



杜超 发表于:2015-11-30 09:09:43
快速开发平台--子窗体数据合计在主窗体显示的示例[Access软件网]
http://www.accessoft.com/article-show.asp?id=9698

zhaoyoulong 发表于:2015-12-08 15:21:51

select 编号,姓名,咨询类型,[起始时间] & "-" & [结束时间] AS 起止日期,sum(单次价格) as 累计消费,count(*) as 咨询次数
from 阁下的表名称

where 咨询日期 between [起始时间] and [结束时间]
group by 编号,姓名,咨询类型,[起始时间] & "-" & [结束时间]



阿克赛思 发表于:2015-12-15 14:28:25

zhaoyoulong  感谢您的帮助,不过用你的方法仍然会出现重复的条目(重复的编号,姓名),与我的需求不符


我最终的解决办法 如楼上 ,通过2个查询,配合  vb6 进行数据库编程,最终形成汇总表 



总记录:9篇  页次:1/1 9 1 :