ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-10-3 20:35 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
前段时间,得到坛友mn860429、suwenkai的帮助,制作了一个“销售库存总表”,详见http://club.excelhome.net/thread-627622-1-1.html,在公司用了一段时间,效果非常好。非常感谢suwenkai和mn860429!

      但这几天公司又新开了一个柜台,于是在原有SQL语句的基础上修改,结果提示“From子句语法错误”,原语句如下(可以用,由坛友suwenkai提供):

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.品名

增加新柜台,并将新柜台命名为“柜台3”,修改后的语句为(该语句提示为“From子句语法错误”,红字为修改的地方):

select a1.类别, a1.品名, sum(入库数量) as 入库数量, sum(出库到柜台1) as 出库到柜台1, sum(出库到柜台2) as 出库到柜台2, sum(出库到柜台3) as  出库到柜台3,sum(出库到其他) as  出库到其他,sum(a2.数量) as 柜台1销售清单,sum(a3.数量) as 柜台2销售清单, sum(a4.数量) as 柜台3销售清单, sum(a5.数量) as 其他销售清单
from
(((select 类别, 品名, sum(入库数量) as 入库数量, sum(出库到柜台1) as 出库到柜台1, sum(出库到柜台2) as 出库到柜台2, sum(出库到柜台3) as  出库到柜台3, sum(出库到其他) as  出库到其他
from [公司出入库$b2:h] 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 [柜台3销售清单$b2:f] group by 品名) a4 on a1.品名=a4.品名) left join
(select 品名,sum(数量) as 数量 from [其他销售清单$b2:f] group by 品名) a5 on a1.品名=a5.品名 group by a1.类别, a1.品名

请各位指教,先谢谢大家!!


还有一个问题要请教大家,在增加柜台3之前,其他都很正常,但有一个问题不得其解:在透视表总表中,橙色文字的几列库存数量,都是通过:数据透视表―→公式―→计算字段,计算而来,但如果按顺序先计算柜台1库存、柜台2库存、公司库存,再计算深圳总库存,柜台1、柜台2和公司库存可以显示出来,而深圳总库存这一列无法显示出来,不知是何原因?是不是透视表总列数有限制?据我观察,好像数据区的总列数十行后就无法显示?是否偶然?请指教!

[ 本帖最后由 brdsz 于 2010-10-6 10:54 编辑 ]

销售库存表.rar

20.67 KB, 下载次数: 36

深圳总库存无法显示.rar

36.53 KB, 下载次数: 23

TA的精华主题

TA的得分主题

发表于 2010-10-4 09:11 | 显示全部楼层
过几天再来看看
设计思路有问题。

TA的精华主题

TA的得分主题

发表于 2010-10-4 17:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
使用的是
附件
销售库存表.rar (20.67 KB)
中的数据
桌面.rar (210.12 KB, 下载次数: 21)

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-4 18:33 | 显示全部楼层

回复 3楼 wongme 的帖子

谢谢,看了你的附件,很好!但有两个问题:

1、你分类没有给我加上去,分类一定要。
2、你给我的附件是PDF和jpg文件,我不知道你用什么方法得到你这个结果。

但不管如何,还是要谢谢你!!!!!

TA的精华主题

TA的得分主题

发表于 2010-10-4 19:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
是用powerpivot插件,只能运行在excel2010中。
类别如图 sshot-9.jpg
能否给我相对完整的数据,我测试一下。我的邮箱wongme@126.com

TA的精华主题

TA的得分主题

发表于 2010-10-4 19:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
另外
推荐书
PowerPivot.for.the.Data.Analyst.Microsoft.Excel.2010

TA的精华主题

TA的得分主题

发表于 2010-10-5 00:12 | 显示全部楼层
用了UNION all 和右连接的做法。参考一下。
select a1.*,a2.类别,
iif(分类="出库到柜台1",数量,0) - iif(分类="柜台1销售",数量,0) as 柜台1库存,
iif(分类="出库到柜台2",数量,0) - iif(分类="柜台2销售",数量,0) as 柜台2库存,
iif(分类="出库到柜台3",数量,0) - iif(分类="柜台3销售",数量,0) as 柜台3库存,
iif(分类="出库到其他",数量,0) - iif(分类="其他销售清单",数量,0) as 其他库存
from
(select 品名,val(数量) as 数量,分类
from (select 品名,入库数量 as 数量,"库数量" as 分类 from [公司出入库$a2:j] union all
select 品名,出库到柜台1,"出库到柜台1" as 分类 from [公司出入库$a2:j] union all
select 品名,出库到柜台2,"出库到柜台2" as 分类 from [公司出入库$a2:j] union all
select 品名,出库到柜台3,"出库到柜台3" as 分类 from [公司出入库$a2:j] union all
select 品名,出库到其他,"出库到其他" as 分类 from [公司出入库$a2:j] union all
select 品名,公司库存,"公司库存" as 分类 from [公司出入库$a2:j] union all
select 品名,数量,"柜台1销售"  as 分类 from [柜台1销售清单$a2:j] union all
select 品名,数量,"柜台2销售"  as 分类 from [柜台2销售清单$a2:j] union all
select 品名,数量,"柜台3销售"  as 分类 from [柜台3销售清单$a2:j] union all
select 品名,数量,"其他销售清单"  as 分类 from [其他销售清单$a2:j] ) where 数量 is not null) a1 right join
(select distinct 类别,品名 from [公司出入库$a2:j] ) a2 on a1.品名=a2.品名

销售库存表.rar

30.24 KB, 下载次数: 18

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-5 12:17 | 显示全部楼层

回复 7楼 suwenkai 的帖子

谢谢suwenkai !我试了一下,很好。但是柜台1库存、柜台2库存、柜台3库存、其他库存等几项无法放在数据区按列来排放。麻烦指教。

TA的精华主题

TA的得分主题

发表于 2010-10-5 12:33 | 显示全部楼层
不明白你所说的列排放,我用的方法和你以前用的方法不一样了。柜台1库存、柜台2库存、柜台3库存等列字段都在一个类型别里的。不用一个一个的拖进去。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-5 15:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 9楼 suwenkai 的帖子

suwenkai ,谢谢!柜台1库存、柜台2库存、柜台3库存、其他库存等几项在分类中没有出现,我想拖进去也不行。见附件!不知道是我操作有问题,以下几行的内容没有出现在透视表的分类中:

iif(分类="出库到柜台1",数量,0) - iif(分类="柜台1销售",数量,0) as 柜台1库存,
iif(分类="出库到柜台2",数量,0) - iif(分类="柜台2销售",数量,0) as 柜台2库存,
iif(分类="出库到柜台3",数量,0) - iif(分类="柜台3销售",数量,0) as 柜台3库存,
iif(分类="出库到其他",数量,0) - iif(分类="其他销售清单",数量,0) as 其他库存

麻烦你帮我看一下,先谢谢!

[ 本帖最后由 brdsz 于 2010-10-5 16:47 编辑 ]

销售库存表.rar

34.71 KB, 下载次数: 12

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

本版积分规则

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

GMT+8, 2024-11-30 07:38 , Processed in 0.056003 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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