![image.png](https://hackmd.io/_uploads/SkGBiLDQT.png) ![image.png](https://hackmd.io/_uploads/HkyCsLvXp.png) ![image.png](https://hackmd.io/_uploads/H1oj6IPQ6.png) ``` ===== test_a database===== ---- struct serial ---- schema: test_a col: %pageid%, * ---- ===== test_b database ===== ---- struct serial ---- schema: test_b col: %pageid%, * ---- ===== test_a, test_b vertical join===== <code> ---- struct table ---- schema: test_a, test_b col: %pageid%, * ---- </code> ==== Output ==== ---- struct table ---- schema: test_a, test_b col: %pageid%, * ---- ==== Desired Output ==== * Entries with identical model values should be merged * Entries with different model values should be appended to the end, leaving empty cell untouched ^ Page ^ model ^ value a ^ value b ^ value c ^ value d ^ | playground:struct_test | a | 1 | 10 | 5 | 50 | | playground:struct_test | b | 2 | 20 | 6 | 60 | | playground:struct_test | c | null | null | 3 | 30 | | playground:struct_test | d | null | null | 4 | 40 | ===== test_a, test_b horizontal join===== <code> ---- struct table ---- schema: test_a, test_b col: %pageid%, test_a.model, test_b.model, test_a.value a, test_b.value c headers: "Page ID", "test_a.model", "test_b.model" filter: <(can it be achieved via filter?)> ---- </code> ==== Output ==== ---- struct table ---- schema: test_a, test_b col: %pageid%, test_a.model, test_b.model, test_a.value a, test_b.value c headers: "Page ID", "test_a.model", "test_b.model" ---- ==== Desired Output ==== * Filter the output so that only entries with test_a.model == test_b.model are selected ^ Page ^ model ^ model ^ value a ^ value c ^ | playground:struct_test | a | a | 1 | 5 | | playground:struct_test | b | b | 2 | 6 | ``` ![image.png](https://hackmd.io/_uploads/HkyCsLvXp.png)