ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 再次求助,有关SQL语句分类的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-9-18 14:35 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
前几天求助一个“有关提取不重复项、多个工作簿数据合并到一个总表的问题”见帖子http://club.excelhome.net/viewthread.php?tid=625812&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D38&frombbs=1,坛友mn860429提供了一个用SQL和透视表的解决方案,试了一下,感觉很好。给公司的同事用后,建议要在此基础上加一个“类型”进行分类。由于这几天才开始接触透视表,自己在mn860429给的SQL语句的基础上进行了多次修改,都以失败而告终。只好求助于各位坛友,现提供附件,内有详细说明。同时提供mn860429没有加“类别”时写的sql语句:

select a.品名,入库数量,出库到柜台1,出库到柜台2,出库到其他,柜台1销售,柜台2销售,其他销售 from  ((((select 品名,sum(入库数量) as 入库数量,sum(出库到柜台1) as 出库到柜台1,sum(出库到柜台2) as 出库到柜台2,sum(出库到其他) as 出库到其他 from [公司出入库$b2:f] group by 品名) a left join      (select 品名,sum(数量) as 柜台1销售 from [柜台1销售清单$b2:f] group by 品名) b on a.品名=b.品名) left join       (select 品名,sum(数量) as 柜台2销售 from [柜台2销售清单$b2:f] group by 品名) c on a.品名=c.品名) left join       (select 品名,sum(数量) as 其他销售 from [其他销售清单$b2:f] group by 品名) d on a.品名=d.品名)

各位坛友可以在此基础上修改,也可以全新重写。先谢谢各位坛友!!!!!!!!

[ 本帖最后由 brdsz 于 2010-9-23 09:59 编辑 ]

库存表.rar

13.19 KB, 下载次数: 28

TA的精华主题

TA的得分主题

发表于 2010-9-18 15:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. select a.品名,类别,入库数量,出库到柜台1,出库到柜台2,出库到其他,柜台1销售,柜台2销售,其他销售 from

  2. ((((select 品名,类别,sum(入库数量) as 入库数量,sum(出库到柜台1) as 出库到柜台1,sum(出库到柜台2) as 出库到柜台2,sum(出库到其他) as 出库到其他 from [公司出入库$b2:g] group by 品名,类别) a left join   

  3. (select 品名,sum(数量) as 柜台1销售 from [柜台1销售清单$b2:f] group by 品名) b on a.品名=b.品名) left join   

  4. (select 品名,sum(数量) as 柜台2销售 from [柜台2销售清单$b2:f] group by 品名) c on a.品名=c.品名) left join

  5. (select 品名,sum(数量) as 其他销售 from [其他销售清单$b2:f] group by 品名) d on a.品名=d.品名)
复制代码
库存表1.rar (27.4 KB, 下载次数: 21)

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-18 16:19 | 显示全部楼层

回复 2楼 mn860429 的帖子

mn860429,还是你,谢谢!我也是像你这样改的,但老是提示错误:出库到其他循环引用。

我再试试你的,但我更希望得到想我给的样本效果,类别的内容只出现一次,而不是反复出现。

TA的精华主题

TA的得分主题

发表于 2010-9-18 16:24 | 显示全部楼层

select a1.类别, a1.品名, sum(入库数量) as 入库数量, sum(出库到柜台1) as 出库到柜台1, sum(出库到柜台2) as 出库到柜台2, sum(出库到其他) as  出库到其他,sum(a2.数量) as 柜台1销售清单,sum(a3.数量) as 柜台2销售清单,sum(a4.数量) as 其他销售清单
from
(((select 类别, 品名, sum(入库数量) as 入库数量, sum(出库到柜台1) as 出库到柜台1, sum(出库到柜台2) as 出库到柜台2, sum(出库到其他) as  出库到其他
from [公司出入库$b2:g] group by 类别, 品名)a1 left join
(select 品名,sum(数量) as 数量 from [柜台1销售清单$b2:f] group by 品名) a2 on a1.品名=a2.品名) left join
(select 品名,sum(数量) as 数量 from [柜台2销售清单$b2:f] group by 品名) a3 on a1.品名=a3.品名) left join
(select 品名,sum(数量) as 数量 from [其他销售清单$b2:f] group by 品名) a4 on a1.品名=a4.品名 group by a1.类别, a1.品名

[ 本帖最后由 suwenkai 于 2010-9-18 17:02 编辑 ]

库存表.rar

34.94 KB, 下载次数: 21

TA的精华主题

TA的得分主题

发表于 2010-9-18 16:26 | 显示全部楼层

回复 3楼 brdsz 的帖子

应该是这个错了,它的范围比原来的多了一列 [公司出入库$b2:g]

TA的精华主题

TA的得分主题

发表于 2010-9-18 16:41 | 显示全部楼层
反复出现是因为我做的是表,而不是透视表。呵呵
还得group by 啊
我也又看了一下,不用的话产生很多错误数据

[ 本帖最后由 mn860429 于 2010-9-18 17:24 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-18 16:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
几位都要谢谢,我再试试suwenkai的!

TA的精华主题

TA的得分主题

发表于 2010-9-18 16:57 | 显示全部楼层
我再看了一下,得出来的结果,发现有点问题,看来不能偷懒啊,还是要分组合计数量。。。



select a1.类别, a1.品名, sum(入库数量) as 入库数量, sum(出库到柜台1) as 出库到柜台1, sum(出库到柜台2) as 出库到柜台2, sum(出库到其他) as  出库到其他,sum(a2.数量) as 柜台1销售清单,sum(a3.数量) as 柜台2销售清单,sum(a4.数量) as 其他销售清单
from
(((select 类别, 品名, sum(入库数量) as 入库数量, sum(出库到柜台1) as 出库到柜台1, sum(出库到柜台2) as 出库到柜台2, sum(出库到其他) as  出库到其他
from [公司出入库$b2:g] group by 类别, 品名)a1 left join
(select 品名,sum(数量) as 数量 from [柜台1销售清单$b2:f] group by 品名) a2 on a1.品名=a2.品名) left join
(select 品名,sum(数量) as 数量 from [柜台2销售清单$b2:f] group by 品名) a3 on a1.品名=a3.品名) left join
(select 品名,sum(数量) as 数量 from [其他销售清单$b2:f] group by 品名) a4 on a1.品名=a4.品名 group by a1.类别, a1.品名

[ 本帖最后由 suwenkai 于 2010-9-18 17:01 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-18 17:24 | 显示全部楼层
这次的才是没有分组的union all的做法。
select a1.品名,数量,类型,a2.类别 from
(select 品名,入库数量 as 数量,"入库数量" as 类型 from [公司出入库$b2:g] union all
select 品名,出库到柜台1,"出库到柜台1" from [公司出入库$b2:g] union all
select 品名,出库到柜台2,"出库到柜台2" from [公司出入库$b2:g] union all
select 品名,出库到其他,"出库到其他" from [公司出入库$b2:g] union all
select 品名,数量,"柜台1销售" from [柜台1销售清单$b2:f]  union all
select 品名,数量,"柜台2销售" from [柜台2销售清单$b2:f]  union all
select 品名,数量,"其他销售" from [其他销售清单$b2:f]) a1 left join
(select distinct 品名,类别 from [公司出入库$b2:g] ) a2 on a1.品名=a2.品名

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-18 17:47 | 显示全部楼层
非常好,我刚刚试成功了,谢谢suwenkai和mn860429!!!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-29 18:43 , Processed in 0.035627 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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