ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请教SQL语句的问题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-27 21:56 | 显示全部楼层
只能认为EXCEL中的SQL对于数据的确认有点问题,以后保险还是加个范围限定

TA的精华主题

TA的得分主题

发表于 2009-8-28 10:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
数据源如有设置了格式,或单元格曾经写入过值,即使后来清除了单元格内容,SQL语句仍然会将其视为数据源范围。
楼主想要的一步到位的方法见附件。

-----------------------------------------------
多谢16楼的彭同学指出了原附件的期初数有误,现重新调整,也就是将构造两个表的“本期期初”时用UNION 代替UNION ALL,以去掉重复数。

[ 本帖最后由 小蚁雄兵 于 2009-8-28 21:38 编辑 ]

SQL.rar

23.32 KB, 下载次数: 13

SQL.rar

23.18 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2009-8-28 10:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如果楼主所说的一步到位是指只用两个表进行关联得出最后的结果,估计比较困难,主要还是因为你的基础数据是以报表形式(二维表)给出的,自然会增加SQL语句的复杂程度,由此大家也可以体会到基础数据规范的重要性。

[ 本帖最后由 小蚁雄兵 于 2009-8-28 11:01 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-28 20:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
"主要还是因为你的基础数据是以报表形式(二维表)给出的"
仔细体味小蚊这句话,觉得很有道理
另外我查过SQL中有个full outer join可以解决这种情况,但EXCEL下好像不支持

TA的精华主题

TA的得分主题

发表于 2009-8-28 20:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习12楼提供的TRANSFORM...PIVOT... 语句
这是Microsoft JET Engine 3.5以上版本所特有的SQL查询语句,该语句的特点是可以建立一个交叉表格式的查询,一个交叉表同电子表相类似。该语句可以将表中的某些数据作为行,某些数据作为列建立交叉表。该语句的语法如下:
   TRANSFORM condition [select opreation] PIVOT column
   其中condition是在交叉表中要显示的数据,select opreation 是一个SELECT...FROM... 查询,该查询形成交叉表的航信息,PIVOT recordset中column为表中的一个字段,PIVOT子句使用该字段形成交叉表的列。

TA的精华主题

TA的得分主题

发表于 2009-8-28 20:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
TRANSFORM...PIVOT语句的数据构造学习了一下;受此启发,可以改造一下2楼的查询语句:在本例中,库存是数据源中的数(实际上在做进销存透视表时,库存可以定义公式计算,在数据源中就不必体现),所以在导入外部数据时,name D库存为零;不过,要是在导入数据外加辅助列用公式计算的话,也没有问题。

备注:从下图中可以看到,后表中的期初数似乎不对~~~

[ 本帖最后由 penghaifeng 于 2009-8-28 21:03 编辑 ]
2009-08-28_204834.png

SQL.rar

4.28 KB, 下载次数: 9

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-28 21:08 | 显示全部楼层
兄台马上就在研究了啊
可以查到能用full outer join吗

TA的精华主题

TA的得分主题

发表于 2009-8-28 21:39 | 显示全部楼层
原帖由 penghaifeng 于 2009-8-28 20:54 发表
TRANSFORM...PIVOT语句的数据构造学习了一下;受此启发,可以改造一下2楼的查询语句:在本例中,库存是数据源中的数(实际上在做进销存透视表时,库存可以定义公式计算,在数据源中就不必体现),所以在导入外部数据 ...

谢谢指正,已在原贴修正。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-29 21:33 | 显示全部楼层
select [aa$].name,[aa$].期末 as 本期期初,[bb$].入库,[bb$].出库,[bb$].期末 from [aa$] left join [bb$] on [aa$].name = [bb$].name union select distinct [bb$].name,0 as 本期期初,[bb$].入库,[bb$].出库,[bb$].期末 from [bb$] where [bb$].name not in (select [aa$].name from [aa$])
短了一点
今天在书店看到ACCESS不支持full outer join

TA的精华主题

TA的得分主题

发表于 2009-8-30 10:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
呵呵,学习深入理解
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-27 16:47 , Processed in 0.050460 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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