हम कहते हैं कि हम एक मेज है:
कुंजी | मूल्य | _count |
---|---|---|
एक | बी | 3 |
सी | d | 2 |
हम चाहते हैं कि विस्तार करने के लिए इस तरह है कि प्रत्येक कुंजी पर मैप हो जाता है में से प्रत्येक के लिए अलग मूल्य तालिका में और एक हो जाता है _count
0 अगर महत्वपूर्ण मूल्य जोड़ी नहीं था पहले से ही एक गिनती. के लिए उदाहरण के लिए, तालिका के ऊपर, मैं होगा की तरह देखने के लिए:
कुंजी | मूल्य | _count |
---|---|---|
एक | बी | 3 |
एक | d | 0 |
सी | d | 2 |
सी | बी | 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;
लेकिन मुझे संदेह है वहाँ हो सकता है एक आसान/अधिक पठनीय/अधिक कुशल तरीके से इस लागू करने के लिए-किसी भी सुझाव?