


```
===== 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 |
```
