ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4637|回复: 6

[求助] 分类带条件的汇总查询(access),难!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-6-12 13:30 | 显示全部楼层 |阅读模式
有类似如下(数据表),现在我要利用以下数据,生成表格1:
表格1字段为:号码(不重复),2009年1月金额汇总,2009年2月金额汇总,2009年3月金额汇总,2009年4月金额汇总,2009年5月金额汇总
请问如何做到?VBA也行。

数据表:
日期        号码        金额
2009-1-1        110        1
2009-2-1        120        2
2009-3-1        110        3
2009-4-1        114        4
2009-1-1        123        5
2009-2-1        111        6
2009-5-1        214        7
2009-1-1        317        8
2009-2-1        420        9
2009-3-1        523        10
2009-4-1        626        11
2009-1-1        729        12
2009-2-1        832        13
2009-5-1        935        14

TA的精华主题

TA的得分主题

发表于 2009-6-12 16:36 | 显示全部楼层
请参考交叉查询的使用,

TA的精华主题

TA的得分主题

发表于 2009-6-12 20:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-6-12 20:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
TRANSFORM 语句
创建连接查询.

语法
TRANSFORM合计函数
    selectstatement
    TRANSFORM aggfunction
selectstatement
PIVOT pivotfield [IN (value1[, value2[, ...]])]

TRANSFORM 语句可分为以下几个部分:

部分 说明
aggfunction 运算所选数据的 SQL合计函数  
selectstatement SELECT 语句.
pivotfield 在查询结果集中用来创建列标题的字段或表达式。
value1,value2 用来创建列标题的固定值。


说明
使用交叉表查询来摘要数据时,从指定的字段或表达式中选定值作为列标题,这样,可以用比选定查询更紧凑的格式来观察数据。

TRANSFORM是可选的,但当被包含时为 SQL字符串的第一句。它出现在 SELECT 语句(指定作为行标题的字段的)之前,还出现在 GROUP BY 子句(指定行分组的)之前。可以有选择地包含其它子句,例如 WHERE 子句,它指定附加的选择或排序条件。也可以将子查询当作谓词,特别是在叉表查询的 WHERE 子句中。

pivotfield 返回的值被用作查询结果集中的列标题。例如,在交叉表查询中,将根据销售图表按销售月份创建 12 个列。可以限制 pivotfield 用列在可选的 IN 子句中的固定值(value1, value2)来创建标题。也可以用没有数据存在的固定值来创建附加的列。

请参阅

TA的精华主题

TA的得分主题

发表于 2009-6-12 20:55 | 显示全部楼层
TRANSFORM 语句示例

此示例使用 SQL TRANSFORM 子句创建交叉表查询显示 1994 年每一季每位员工所接的订单的数目。 该 SQLTRANSFORMOutput 函数对此过程的完成是必须的。

SubSub()


    Dim dbs As Database

    Dim strSQL As String

    Dim qdfTRANSFORM As QueryDef


    strSQL = "PARAMETERS prmYear SHORT; TRANSFORM " _

        & "Count(OrderID) " _

        & "SELECT FirstName & "" "" & LastName AS " _

        & "FullName FROM Employees INNER JOIN Orders " _

        & "ON Employees.EmployeeID = " _

        & "Orders.EmployeeID WHERE DatePart" _

        & "(""yyyy"", OrderDate) = [prmYear] "

   

    strSQL = strSQL & "GROUP BY FirstName & " _

        & """ "" & LastName " _

        & "ORDER BY FirstName & "" "" & LastName " _

        & "PIVOT DatePart(""q"", OrderDate)"

   

    ' 在您的计算机中修改此行使其正确指到 Northwind 的路径。

    Set dbs = OpenDatabase("Northwind.mdb")

    ' 对运费超过 $100 的订单,


    Set qdfTRANSFORM = dbs.CreateQueryDef _

        ("", strSQL)

   

    SQLTRANSFORMOutput qdfTRANSFORM, 1994

   

    dbs.Close


End Sub


此示例使用 SQL TRANSFORM 子句创

TA的精华主题

TA的得分主题

发表于 2009-6-13 08:59 | 显示全部楼层
TRANSFORM sum(金额) select 号码 from
(select year(日期) & "年" & month(日期) & "月" as 年月,* from 表名 ) PIVOT 年月
透视表概念上理解为:
号码-成了行字段
年月-成了列字段
表名-数据源所在的表名

TA的精华主题

TA的得分主题

发表于 2009-6-13 14:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
使用交叉表查询可以实现。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 03:05 , Processed in 0.038016 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表