Disons que nous avons un tableau:
clé | valeur | _count |
---|---|---|
un | b | 3 |
c | d | 2 |
que nous voulons développer, de sorte que chaque clé est tracé pour chaque valeur distincte dans le tableau et obtient une _count
de 0 si la paire clé-valeur n'a pas déjà un compte. Par exemple, pour le tableau ci-dessus, j'aimerais voir:
clé | valeur | _count |
---|---|---|
un | b | 3 |
un | d | 0 |
c | d | 2 |
c | b | 0 |
J'ai une solution qui fonctionne:
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;
Mais je présume qu'il peut être plus facile/plus lisible et plus efficace de mettre en œuvre cette -- des suggestions?