Скажем, у нас есть столик:
Клавиша | ценность | _счет |
---|---|---|
a | b | 3 |
c | d | 2 |
что мы хотим развернуть так, чтобы каждый ключ сопоставлялся с каждым отдельным значением в таблице и получал _count
0, если у пары ключ-значение еще не было счетчика. Например, для приведенной выше таблицы я хотел бы видеть:
Клавиша | ценность | _счет |
---|---|---|
a | b | 3 |
a | d | 0 |
c | d | 2 |
c | b | 0 |
У меня есть рабочее решение:
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;
Но я подозреваю, что может быть более простой/более читаемый/более эффективный способ реализовать это-какие-либо предложения?