power query 根据两个日期之间的交易日期合并两个表

power query merge two tables based on the transaction date between two dates

我正在尝试使用 Power Query 在两个 table 之间执行连接(1 - 交易 table 和 2 - 员工 ID 和日期范围),其中交易日期介于两个日期之间.

交易Table

+-------+-----------------+--------+
| EmpID | TransactionDate | Amount |
+-------+-----------------+--------+
|   123 | 5/5/2019        |     30 |
|   345 | 2/23/2019       |     40 |
|   456 | 4/3/2018        |     50 |
+-------+-----------------+--------+

员工编号

+-------+-----------+-----------+
| EmpID | StartDate |  EndDate  |
+-------+-----------+-----------+
|   123 | 5/1/2019  | 5/30/2019 |
+-------+-----------+-----------+

期望的输出

+-------+-----------------+--------+
| EmpID | TransactionDate | Amount |
+-------+-----------------+--------+
|   123 | 5/5/2019        |     30 |
|   456 | 4/3/2018        |     50 |
+-------+-----------------+--------+

如果我要在 SQL 中执行此操作,我将编写以下代码:

select *
from transaction as A
inner join empID_date as B
on A.EmployeeID = B.EmployeeID
and A.TransactionDate >= B.StartDate
and A.TransactionDate <= B.EndDate

是否可以在 Excel Power Query 中执行此操作?谢谢。

进行标准合并,然后过滤。

  1. 使用内部联接合并查询。
  2. 展开开始日期和结束日期列。
  3. Select 列满足您的条件。
  4. 删除多余的列。
let
    Source = < Transaction table source or definition goes here >,
    #"Merged Queries" = Table.NestedJoin(Source, {"EmpID"}, emp_ID, {"EmpID"}, "emp_ID", JoinKind.Inner),
    #"Expanded emp_ID" = Table.ExpandTableColumn(#"Merged Queries", "emp_ID", {"StartDate", "EndDate"}, {"StartDate", "EndDate"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded emp_ID", each [TransactionDate] >= [StartDate] and [TransactionDate] <= [EndDate]),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"StartDate", "EndDate"})
in
    #"Removed Columns"