Supponiamo di avere una tabella:
chiave | valore | _count |
---|---|---|
un | b | 3 |
c | d | 2 |
che vogliamo espandere in modo tale che ogni chiave viene mappato per ogni valore distinto nella tabella e ottiene un _count
0 se la coppia chiave-valore, non già del conte. Per esempio, per la tabella di cui sopra, mi piacerebbe vedere:
chiave | valore | _count |
---|---|---|
un | b | 3 |
un | d | 0 |
c | d | 2 |
c | b | 0 |
Ho una soluzione di lavoro:
WITH key_value_pairs AS (
SELECT
a.key,
b.value
FROM
(SELECT DISTINCT key FROM table) a, (SELECT DISTINCT value FROM table) b
)
SELECT
kvp.key,
kvp.value,
COALESCE(base._count, 0) _count
FROM
key_value_pairs kvp
LEFT JOIN
table base ON base.key = kvp.key AND base.value = kvp.value;
Ma ho il sospetto che ci può essere un più facile/più leggibile e più efficiente modo per implementare questa -- qualche suggerimento?