Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 23229|回复: 75

[习题] VBA+SQL如何实现同一表多条件查询输出

  [复制链接]
发表于 2011-1-24 20:04 | 显示全部楼层 |阅读模式
本帖最后由 lisan 于 2011-1-24 20:04 编辑

同一文件,同一工作簿[销售明细$] 有以下8个条件查询,请问如何将它们串起来,即输出:
部门名称 业务员 一月件数 二月件数 三月件数……八月件数
  1. s1 = "select 部门名称,业务员,count(*) as 一月件数 from [销售明细$a2:y65536]  where 入库时间 between #" & 2010-01-01 & "# AND  #" & 2010-01-15 & "# group by 部门名称,业务员"
  2. ……
  3. s8 = "select 部门名称,业务员,count(*) as 八月件数 from [销售明细$a2:y65536]  where 入库时间 between #" & 2010-08-01 & "# AND  #" & 2010-08-15 & "# group by 部门名称,业务员"
复制代码
以上仅仅是举例子,实际情形详见附件,请不要用别的解法,希望能实现 SQL同一表多条件查询输出,在此先行谢过。

销售报表.rar (13.51 KB, 下载次数: 227)
发表于 2011-1-26 15:03 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-1-26 15:11 | 显示全部楼层
是问题,不是分享,没法让你学习的。
回复

使用道具 举报

发表于 2011-1-26 15:12 | 显示全部楼层
{:171:}不用VBA,纯SQL也可以做到,你想按那些条件查询{:171:}
回复

使用道具 举报

 楼主| 发表于 2011-1-26 22:41 | 显示全部楼层
没想到都惊动了wuxiang老师了!谢谢!
回复

使用道具 举报

发表于 2011-1-27 14:32 | 显示全部楼层
深奥的问题,期待高手解决了
回复

使用道具 举报

发表于 2011-1-27 14:39 | 显示全部楼层
本帖最后由 mn860429 于 2011-1-27 14:39 编辑

先用union all查询所有工作表的数据,最后进行分类汇总{:011:}l
回复

使用道具 举报

 楼主| 发表于 2011-1-27 19:10 | 显示全部楼层
能提供详细解法吗?
回复

使用道具 举报

发表于 2011-1-29 13:01 | 显示全部楼层
先用union all查询所有工作表的数据,最后进行分类汇总,能提供详细解法吗?
回复

使用道具 举报

发表于 2011-1-29 23:46 | 显示全部楼层
本帖最后由 爱疯 于 2011-10-26 17:24 编辑

按你说的理解了,但结果和你的模拟结果有出入

[hide
]

  1. SQL = "SELECT 部门名称, 业务员, Count(*), Sum(IIf([问题件类型]='首次转账不成功问题件',1,0)), Format(Sum(IIf([问题件类型]='首次转账不成功问题件',1,0))/Count(*),'0.00%'), " _
  2. & "Sum(IIf(DateDiff('d',[二次到期日期],[二次交费日期])<=3,1,0)), Format(Sum(IIf(DateDiff('d',[二次到期日期],[二次交费日期])<=3,1,0))/Count(*),'0.00%'), Sum(IIf(Month([二次到期日期])=Month([二次交费日期]),1,0)), Format(Sum(IIf(Month([二次到期日期])=Month([二次交费日期]),1,0))/Count(*),'0.00%'), " _
  3. & "Sum(IIf(DateDiff('d',[三次到期日期],[三次交费日期])<=3,1,0)), Format(Sum(IIf(DateDiff('d',[三次到期日期],[三次交费日期])<=3,1,0))/Count(*),'0.00%'), Sum(IIf(Month([三次到期日期])=Month([三次交费日期]),1,0)), Format(Sum(IIf(Month([三次到期日期])=Month([三次交费日期]),1,0))/Count(*),'0.00%'), " _
  4. & "Sum(IIf(DateDiff('d',[四次到期日期],[四次交费日期])<=3,1,0)), Format(Sum(IIf(DateDiff('d',[四次到期日期],[四次交费日期])<=3,1,0))/Count(*),'0.00%'), Sum(IIf(Month([四次到期日期])=Month([四次交费日期]),1,0)), Format(Sum(IIf(Month([四次到期日期])=Month([四次交费日期]),1,0))/Count(*),'0.00%') " _
  5. & "FROM [销售明细$a2:y] WHERE (保单状态 Is Not Null) and 扫描时间 between #" & TD1 & "# AND #" & TD2 & "# GROUP BY 部门名称,业务员"
复制代码

销售报表.rar (11.13 KB, 下载次数: 329)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 03:26 , Processed in 0.293066 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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