RosettaCodeData/Task/Associative-array-Merging/DuckDB/associative-array-merging-2...

12 lines
376 B
Plaintext

create or replace function map_merge_patch(a,b) as (
with keys_t as (
select (map_keys(a) + map_keys(b)).list_distinct() as keys
),
values_t as (
select list_transform(keys, key -> coalesce(b[key][1],a[key][1])) as values
from keys_t)
select MAP(keys, values) from keys_t, values_t
);
select map_merge_patch( MAP([1,2],[1,2]), MAP([1,3],[10,30])) as add;