ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 数据透视SQL-右表数据显示不全!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-5-13 13:55 | 显示全部楼层 |阅读模式
两表利用SQL对比,在【订单表】最后三行中有【发货表】不存在的数据项无法在透视表中显示,
应该是SQL语句使用了left join导致,由于Excel但无法使用full join。

需要解决的问题:
将两表进行全连接对比,数据透视表中需要显示两表的所有项,避免数据显现有遗漏。



目前语句如下:
select t1.*,t1.发货金额 * t1.发货数量 as 发货总额,
       t2.订单数量,t2.订单金额,t2.订单金额 * t2.订单数量 as 订单总额
from (
  select 客户名称,款号,品名,单据类型,
         sum(数量) as 发货数量,
         sum(金额) as 发货金额
  from [发货$]
  group by 客户名称,款号,品名,单据类型
) t1 left join (
  select 客户,产品编码,
         sum(数量) as 订单数量,
         sum(金额) as 订单金额
  from [订单$]
  group by 客户,产品编码
) t2
on t1.客户名称 = t2.客户 and t1.款号 = t2.产品编码
where t1.单据类型 = "自营调拨单"
union all
select t1.*,0,0,0,0
from (
  select 客户名称,款号,品名,单据类型,
         sum(数量) as 发货数量,
         sum(金额) as 发货金额
  from [发货$]
  group by 客户名称,款号,品名,单据类型
) t1
where t1.单据类型 = "自营退货单"


对比表.rar

74.75 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2022-5-13 14:49 | 显示全部楼层
excel的SQL是不支持full的,所以,left和right合起来。。。。。比较折腾路过

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-15 20:03 | 显示全部楼层
是的,但是主要公司用的最普遍和方便的还是excel,所以还是尽量能实现表格间的运用

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-16 14:53 | 显示全部楼层
有版主可以协助下关键参数吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-21 13:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-5-22 21:05 | 显示全部楼层
本帖最后由 pxy0409 于 2022-5-22 21:30 编辑

sql语句写得复杂了,不用左右连接,简化一些应该可以;另外,发货金额和订单金额实际上都是单价吧?直接在透视表中计算字段完成,不用sql.


select       单据类型,           客户名称,      款号,        品名, sum(数量) as 发货数量,  sum(金额) as 发货金额,0 as 订单数量,0 as 订单金额 from [发货$] group by 单据类型,客户名称,款号,品名 union all
select "自营调拨单",                 客户,产品编码, 产品名称, 0,0,sum(数量) as 订单数量, sum(金额) as 订单金额  from [订单$]  group by 客户,产品编码, 产品名称

TA的精华主题

TA的得分主题

发表于 2022-5-22 21:38 | 显示全部楼层
再做一次聚合也可以,源数据行数多的话,可能会提高一点刷新速度;顺便加上总额也可.
select  单据类型, 客户名称, 款号, 品名, sum(发货数量) as 发货数量,  sum(发货金额) as 发货金额,sum(发货数量) * sum(发货金额) as 发货总额,sum(订单数量) as 订单数量, sum(订单金额) as 订单金额,sum(订单数量) *sum(订单金额) as 订单总额 from
(select       单据类型,           客户名称,      款号,        品名, sum(数量) as 发货数量,  sum(金额) as 发货金额,0 as 订单数量,0 as 订单金额 from [发货$] group by 单据类型,客户名称,款号,品名 union all
select "自营调拨单",                 客户,产品编码, 产品名称, 0,0,sum(数量) as 订单数量, sum(金额) as 订单金额  from [订单$]  group by 客户,产品编码, 产品名称)  
group by 单据类型,客户名称,款号,品名

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-28 12:44 | 显示全部楼层
pxy0409 发表于 2022-5-22 21:38
再做一次聚合也可以,源数据行数多的话,可能会提高一点刷新速度;顺便加上总额也可.
select  单据类型, 客户 ...

老师的此法甚妙,达到我想要的结果,解决了困惑,太感谢了!

TA的精华主题

TA的得分主题

发表于 2022-5-30 15:24 | 显示全部楼层
PQ+透视表做了一个。

对比表.rar

155.92 KB, 下载次数: 9

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-6-5 05:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
mavin 发表于 2022-5-30 15:24
PQ+透视表做了一个。

PQ也不错,有没有此表PQ操作步骤或者视频,平时PQ用的不多,所以不太熟悉
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-28 08:56 , Processed in 0.049428 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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