表 1 和表 2,两个表之间靠日期返回数据,如何实现表 1日期"大于等于"表 2日期,返回表 2 指定列的数值。

Power Query 一片叶 ⋅ 于 2020-04-24 21:50:14 ⋅ 最后回复由 叮当 2020-10-05 22:36:17 ⋅ 1737 阅读

file
file
销售表的日期大于 等于 成本表 4月20日,小于等于成本表中 4月25日。则返4月20日的成本
销售表的日期大于 等于 成本表 4月25日,则返4月25日的成本

这个如何实现呢? 求大神帮忙。

成为第一个点赞的人吧 :bowtie:
回复数量: 4
  • Alex MOD 社区清洁工
    2020-04-24 22:48:44
    Table.Max(Table.SelectRows(成本,(x)=>x[产品]=[产品] and x[日期]<=[日期]),each [日期])[成本]?)

    返回成本表里日期小于等于当前日期的最大日期的成本,找不到就返回空

    file

  • deadzlq 无我,亦无期
    2020-04-24 22:55:50

    PQ参考解法

    let
        销售 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
        成本 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
        结果 = Table.CombineColumns(Table.DuplicateColumn(Table.NestedJoin(销售, {"产品"}, 成本, {"产品"}, "table", JoinKind.LeftOuter), "日期", "CompareDate"),
                {"table","CompareDate"},each Table.Sort(Table.SelectRows(_{0},(x)=>x[日期]<=_{1}),{"日期",Order.Descending})[金额]{0}?,"金额")
    in
        结果
  • deadzlq 无我,亦无期
    2020-04-24 22:56:14

    file

  • 叮当
    2020-10-05 22:36:17
    = Table.AddColumn(源, "金额1", each [
                                    a=Table.SelectRows(成本, (x)=>x[产品]=[产品]),
                                    b=List.Min(a[日期]),
                                    c=List.Max(a[日期]),
                                    d=if [日期]>=b and [日期]<c then List.First(a[金额]) else List.Last(a[金额])
    ][d]
    )

    file

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter