Forum Discussion

John255's avatar
John255
New Member
3 years ago
Solved

Adding Column from another query with value type per row

Hi

 

I have these two querys resulting in these tables

 

TableA

ID

Name

1

john

2dave
3jane
4steve

 

TableB

IDValueNameValue
1age20
1gendermale
1marriedyes
2age22
2gendermale
2marriedno
3age30
3genderfemale
3marriedyes
4age33
4gendermale
4marriedno


I want to add some of the ValueName values from TableB as columns in TableA to get this

 

ID

Name

agegender
1

john

20male
2dave22male
3jane30female
4steve33male

 

I'm still very much on the learning curve here and any help will be very much appriciated.

 

Thank you

 

 

 

  • Hi John255,

     

    You can use the Merge Query option on the Ribbon, setting the ID as key to both tables, this will return a table. When we transform that table into a record, we can expand a selection of its fields to new columns.

     

    To illustrate

    let
        Source = Table.NestedJoin(TableA, {"ID"}, TableB, {"ID"}, "TableB", JoinKind.LeftOuter),
        ReplaceValue = Table.TransformColumns( Source, {{ "TableB", each Record.FromList( _[Value], _[ValueName] ) }} ),
        ExpandRecordFields = Table.ExpandRecordColumn(ReplaceValue, "TableB", {"age", "gender"}, {"age", "gender"})
    in
        ExpandRecordFields

     

    with this result.

     

    Ps. If this helps you solve your query, please mark it as solution. Thanks!

2 Replies

  • m_dekorte's avatar
    m_dekorte
    Resident Rockstar

    Hi John255,

     

    You can use the Merge Query option on the Ribbon, setting the ID as key to both tables, this will return a table. When we transform that table into a record, we can expand a selection of its fields to new columns.

     

    To illustrate

    let
        Source = Table.NestedJoin(TableA, {"ID"}, TableB, {"ID"}, "TableB", JoinKind.LeftOuter),
        ReplaceValue = Table.TransformColumns( Source, {{ "TableB", each Record.FromList( _[Value], _[ValueName] ) }} ),
        ExpandRecordFields = Table.ExpandRecordColumn(ReplaceValue, "TableB", {"age", "gender"}, {"age", "gender"})
    in
        ExpandRecordFields

     

    with this result.

     

    Ps. If this helps you solve your query, please mark it as solution. Thanks!