ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助select查询语句的问题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-2 18:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
longwin 发表于 2024-7-31 21:10
代码审核太慢了:

谢谢,但是结果会把号列也弄出来,并且表一里也有空行

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-2 18:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zpy2 发表于 2024-8-1 06:47
On a.号=b.号 GROUP BY a.号"

我这里是sqlite,你要修改一下

大佬我按照自己的理解改了一下,现在能看出结果有一半是对的了,但是红框那部分也跟着一起出来了。我的琢磨着括号里边是表二按照号码来分组求和,形成的新表重命名为c,然后表一再和这个c表left join,最后就出来正确结果了,但不知为什么这个表c也跟着出来了。表c我以为是个中间的过渡表,没想到也会出来
企业微信截图_17225941614994.png

TA的精华主题

TA的得分主题

发表于 2024-8-2 19:26 来自手机 | 显示全部楼层
wang002368 发表于 2024-8-2 18:27
大佬我按照自己的理解改了一下,现在能看出结果有一半是对的了,但是红框那部分也跟着一起出来了。我的琢 ...

select a.f01,b.total from Sheet2 a left join
(select f01,sum(f02) total from Sheet1 group by f01) b using(f01);

*我这里合并列了,你这里把2个表一样字段名的都列出来,所以,你要加个a.  b. 这样子的表名把显示的字段明确指定。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-2 19:28 来自手机 | 显示全部楼层
wang002368 发表于 2024-8-2 18:27
大佬我按照自己的理解改了一下,现在能看出结果有一半是对的了,但是红框那部分也跟着一起出来了。我的琢 ...

a.号, Sum(b.额)

参考一下8楼的,这个比较好,直接指定了具体的字段名

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-3 15:14 | 显示全部楼层
  1. StrSQL = "Select 号, Sum(额) From [4、表二$] GROUP BY 号"
  2.    
  3.     Sheets(1).Range("A2").CopyFromRecordset Cn.Execute(StrSQL)
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-5 09:50 | 显示全部楼层
zpy2 发表于 2024-8-2 19:28
a.号, Sum(b.额)

参考一下8楼的,这个比较好,直接指定了具体的字段名

8楼的方法也不太对,因为表一的号列不需要再输出一次,并且表一也有空白行,8楼的方法无法规避这个问题。两个表都有空白行,要同时排除干扰,我看了一下所有楼的解答,只有大佬你的最符合的。目前就是c.*的问题,select c.* total from [3、表一$]a left join (select b.号,sum(b.额) from [4、表二$]b group by b.号) as c on a.号 = c.号,之前是*所以所有列都跑出来了,现在改成c.*,就只出来c表的数据了,只要把c.*的*号改成c表第二列的名字就行了,但是我试了好多,包括c.额 c.(sum(额)) c.(sum(b.额)),统统都不对,我有点懵

TA的精华主题

TA的得分主题

发表于 2024-8-5 11:46 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wang002368 发表于 2024-8-5 09:50
8楼的方法也不太对,因为表一的号列不需要再输出一次,并且表一也有空白行,8楼的方法无法规避这个问题。 ...

select a.*, c.合计 total from [3、表一$]a left join (select b.号,sum(b.额) as 合计 from [4、表二$]b group by b.号) as c on a.号 = c.号
子查询 字段名 别名
如果还要排除空行 where a.号 is not Null

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-5 12:08 | 显示全部楼层
zpy2 发表于 2024-8-5 11:46
select a.*, c.合计 total from [3、表一$]a left join (select b.号,sum(b.额) as 合计 from [4、表二$] ...

搞定了大佬,谢谢。最后是这样的select c.合计 from [3、表一$]a left join (select b.号,sum(b.额) as 合计 from [4、表二$]b where b.号 is not Null group by b.号 ) as c on a.号 = c.号。给表c合计那列重命名一下就好了,where b.号 is not Null不影响结果

评分

1

查看全部评分

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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