ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 【SQL查询】vba如何通过SQL计算每一行的数值占比?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-13 18:21 | 显示全部楼层
cui26896 发表于 2020-2-13 17:30
运行老师的代码与原来一样,没有变化。

你觉得每个客户只有一个,能有什么变化?

TA的精华主题

TA的得分主题

发表于 2020-2-13 18:24 | 显示全部楼层
microyip 发表于 2020-2-13 18:21
你觉得每个客户只有一个,能有什么变化?

这问题是提问人造成的,我看他的附件,就对不上来。

TA的精华主题

TA的得分主题

发表于 2020-2-14 16:56 | 显示全部楼层
  1. USE tempdb
  2. GO
  3. IF OBJECT_ID('test') IS NOT NULL
  4.   DROP TABLE test;
  5. GO
  6. CREATE TABLE test
  7. (
  8.   科目代码 varchar(10),
  9.   科目名称 nvarchar(8),
  10.   本年借方累计 money,
  11.   父级代码 varchar(10)
  12. );
  13. GO
  14. INSERT INTO test VALUES
  15. ('1122.01','应收检测服务费',4985.5,'1122'),
  16. ('1122.01.01','[06]饮片厂',0,'1122.01'),
  17. ('1122.01.02','[07]黄生',1975,'1122.01'),
  18. ('1122.01.03','[19]孟先生',463,'1122.01')
  19. GO
  20. ----------------------------------------
  21. select * from test
  22. /*
  23. 科目代码        科目名称        本年借方累计        父级代码
  24. 1122.01        应收检测服务费        4985.50        1122
  25. 1122.01.01        [06]饮片厂        0.00        1122.01
  26. 1122.01.02        [07]黄生        1975.00        1122.01
  27. 1122.01.03        [19]孟先生        463.00        1122.01
  28. */
  29. ----------------------------------------
  30. select a.*,b.本年借方累计 as 父级本年借方累计,a.本年借方累计/b.本年借方累计 as 本年占比
  31. from test as a
  32. join test as b
  33. on a.父级代码=b.科目代码
  34. union all
  35. select a.*,b.本年借方累计 as 父级本年借方累计,a.本年借方累计/b.本年借方累计 as 本年占比
  36. from test as a
  37. join (select left(科目代码,4) as 科目代码,'应收帐目' as 科目名称,sum(本年借方累计) as 本年借方累计  from test group by left(科目代码,4)) as b
  38. on a.父级代码=b.科目代码
  39. ----------------------------------------
  40. /*
  41. 科目代码        科目名称        本年借方累计        父级代码        父级本年借方累计        本年占比
  42. 1122.01.01        [06]饮片厂        0.00        1122.01        4985.50        0.00
  43. 1122.01.02        [07]黄生        1975.00        1122.01        4985.50        0.3961
  44. 1122.01.03        [19]孟先生        463.00        1122.01        4985.50        0.0928
  45. 1122.01        应收检测服务费        4985.50        1122        7423.50        0.6715
  46. */
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-22 15:48 | 显示全部楼层
两位老师好@microyip @cui26896
其实我想表达的意思是,应收账款=N个业务收入总和,各个业务有若干个客户贡献收入,现只是需要对每个业务的客户收入做占比及降序排列
由于财务系统中已经将“应收账款”、“每个业务的收入合计”、“每个客户每种业务收入的合计”均已有数据了,只是客户收入未按在各业务中列示占比及降序排列。故理应不需要做客户的分类汇总(如groupby这种,因为它可能会不分业务直接汇总而不符合使用者需求),而是需要用其他方法处理(我不懂还有什么,除了另外设一个数组循环,但担心速度慢)

@amazeyeli 老师的代码不是很懂怎么嵌套进vba中,抱歉不明白噢

@shenjianrong163 的老师能符合我的需求,但为什么我添加一行原始数据后再执行,缺不能完整显示出来呢?谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-22 15:49 | 显示全部楼层
shenjianrong163 发表于 2020-2-13 17:15
加一个数组计算一下:

谢谢老师,能符合需求,但为什么我添加一行原始数据后再执行,缺不能完整显示出来呢?谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-22 15:51 | 显示全部楼层

老师好,感觉不行呢。
其实原始数据来自财务系统,已有一定的加工了:应收账款=N个业务收入总和,各个业务有若干个客户贡献收入,现只是需要对每个业务的客户收入做占比及降序排列。
由于财务系统中已经将“应收账款”、“每个业务的收入合计”、“每个客户每种业务收入的合计”均已有数据了,只是客户收入未按在各业务中列示占比及降序排列,也就是我的所需呢。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 09:18 , Processed in 0.035739 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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