Řekněme, že máme stůl:
klíč | hodnota | _count |
---|---|---|
a | b | 3 |
c | d | 2 |
to, že chceme rozšířit tak, že každý klíč dostane mapovány na každou odlišnou hodnotu v tabulce a dostane _count
0 pokud pár klíč-hodnota se již neměli počítat. Například pro výše uvedené tabulce, rád bych viděl:
klíč | hodnota | _count |
---|---|---|
a | b | 3 |
a | d | 0 |
c | d | 2 |
c | b | 0 |
Mám pracovní roztok:
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;
Ale mám podezření, že může být jednodušší/přehlednější/více efektivní způsob, jak realizovat to ... nějaké návrhy?