[已解决] 刚入门,请教一对多查询问题

  [复制链接]
查看155009 | 回复142 | 2020-9-25 00:55:10 | 显示全部楼层 |阅读模式
刚开始学POWER QUERY,请教一个一对多查询的问题。如下图所示,表1的序号在表2中有多个,当表2中序号对应的所有点全部完成时,表1的完成时间记录为表2中记录的最后时间(如SG3为19/12/31),用POWER QUERY如何实现?
10223101631371.png
回复

使用道具 举报

ltns | 2020-9-25 01:00:10 | 显示全部楼层
对表2 按收款序号分组,对实际完成时间列求最大值,再和表1合并查询,取到这个匹配的最大值。
回复

使用道具 举报

zzzrrrxxx | 2020-9-25 01:06:11 | 显示全部楼层
  1. = Table.Group(源,"收款序号",{"实际完成时间",each List.MaxN([实际完成时间],1,{each _=null,each _},1=1){0}},1)
复制代码
10223101631372.jpg

直接用List.Sort简单一些:
  1. = Table.Group(源,"收款序号",{"实际完成时间",each List.Sort([实际完成时间],each -Number.From(_)){0}},1)
复制代码
10223101631373.jpg
回复

使用道具 举报

树洪 | 2020-9-25 01:14:11 | 显示全部楼层
直接用List.Sort简单一些:


为什么,sgp01, 要取空值?不理解
回复

使用道具 举报

鹿鸣 | 2020-9-25 01:15:11 | 显示全部楼层
为什么,sgp01, 要取空值?不理解


看题目,“对应的所有点全部完成时”
回复

使用道具 举报

wcwlwk | 2020-9-25 01:24:11 | 显示全部楼层
终于看明白了,分组后 表2的完成时间列如果有空值,就返回空值,否则返回最大值 用List.Contains()也可以判断,大神的 list.sort 看明白了, 前面的list.maxn 的第三参数,和第四参数的写法 太烧脑了,需要好好琢磨一下。
回复

使用道具 举报

moma | 2020-9-25 01:27:12 | 显示全部楼层
学习,学习,学习,学习,学习,
回复

使用道具 举报

HONDA | 2020-9-25 01:31:12 | 显示全部楼层
直接用List.Sort简单一些:


太感谢了。
回复

使用道具 举报

台风 | 2021-5-18 09:31:15 来自手机 | 显示全部楼层
前排支持下了哦~
回复

使用道具 举报

xprimer | 2021-6-24 17:04:24 | 显示全部楼层
为了三千积分!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则