let
T1 = Excel.CurrentWorkbook(){[Name="TableA"]}[Content],
T2 = Excel.CurrentWorkbook(){[Name="TableB"]}[Content],
MQ = Table.NestedJoin(T1, {"Task ID"}, T2, {"Task ID"}, "Table2", JoinKind.FullOuter),
ExpandedTable = Table.ExpandTableColumn(MQ, "Table2", {"Task ID", "Amount"}, {"Task ID.1", "Amount.1"}),
SortRows = Table.Sort(ExpandedTable,{{"Task ID", Order.Ascending}}),
GroupedRows = Table.Group(SortRows, {"Task ID"}, {{"Data", each _, type table [Task ID=text, Amount=number, Task ID.1=text, Amount.1=number]}}),
AddedCustomColumn = Table.AddColumn(GroupedRows, "Custom", each Table.AddIndexColumn([Data],"Row",1,1)),
RemovedColumns = Table.SelectColumns(AddedCustomColumn,{"Custom"}),
ExpandedCustomColumn = Table.ExpandTableColumn(RemovedColumns, "Custom", {"Task ID", "Amount", "Task ID.1", "Amount.1", "Row"}, {"Task ID", "Amount", "Task ID.1", "Amount.1", "Row"}),
FilterFor1 = Table.AddColumn(ExpandedCustomColumn, "Custom", each if [Row]=1 then [Task ID] else null),
#"Added Custom" = Table.AddColumn(FilterFor1, "Custom.1", each if [Row]=1 then [Amount] else null),
RemoveCol = Table.RemoveColumns(#"Added Custom",{"Task ID","Row","Amount"}),
MoveColumn = Table.ReorderColumns(RemoveCol,{"Custom", "Custom.1","Task ID.1", "Amount.1"}),
RenamedColumns = Table.RenameColumns(MoveColumn,{{"Custom", "Task ID"},{"Custom.1","Amount"}})
in
RenamedColumns
let
T1 = Excel.CurrentWorkbook(){[Name="TableA"]}[Content],
T2 = Excel.CurrentWorkbook(){[Name="TableB"]}[Content],
MQ = Table.NestedJoin(T1, {"Task ID"}, T2, {"Task ID"}, "Table2", JoinKind.FullOuter),
idx_to_Table2 = Table.AddColumn(MQ, "idx", each Table.AddIndexColumn([Table2], "idx", 1, 1)),
Expand_idx = Table.ExpandTableColumn(idx_to_Table2, "idx", {"Task ID", "Amount", "idx"}, {"Task ID.1", "Amount.1", "idx.1"}),
Custom1 = Table.ReplaceValue(Expand_idx, each [Task ID], each if [idx.1] > 1 then "" else [Task ID], Replacer.ReplaceValue,{"Task ID"}),
Custom2 = Table.ReplaceValue(Custom1, each [Amount], each if [idx.1] > 1 then "" else [Amount], Replacer.ReplaceValue,{"Amount"}),
Keep_needed = Table.SelectColumns(Custom2,{"Task ID", "Amount", "Task ID.1", "Amount.1"})
in
Keep_needed
let
Source = TableA,
ColNames = Table.ColumnNames(Source),
Merged = Table.NestedJoin(Source,{"Task_ID", "Amount"},TableB,{"Task_ID", "Amount"},"Table2",JoinKind.LeftOuter),
AddedCol = Table.AddColumn(Merged, "New", each
let
a = List.Transform(Table.ToColumns([Table2]), each {_{0}}) & Table.ToColumns([Table2]),
b = Table.FromColumns(a, ColNames & List.Transform(ColNames, each "TableB." & _))
in b, type table)[New],
Custom1 = Table.Combine(AddedCol)
in
Custom1