我有一張這樣的桌子——
n0 n1 n2
232 12 211
323 45 5655
我想產生這個輸出 -
n Count
232 1
12 1
211 1
323 1
45 1
5655 1
我可以在 PostgreSQL 中使用這個查詢來做到這一點。
select el, count(*)
from
(
SELECT n0, n1, n2 from npi
) n
cross join lateral
(select v.el
from (values (n0), (n1), (n2)) v(el)
) v
group by el
但是當我嘗試在 Snowflake 中運行相同的查詢時,出現此錯誤 -
Invalid expression [CORRELATION(N.N0)] in VALUES clause
uj5u.com熱心網友回復:
使用的替代形式UNION ALL:
WITH cte(el) AS (
SELECT n0 FROM npi
UNION ALL SELECT n1 FROM npi
UNION ALL SELECT n2 FROM npi
)
SELECT el, COUNT(*)
FROM cte
GROUP BY el;
輸出:

編輯:
使用 FLATTEN 與 ARRAY_CONSTRUCT 結合的版本:
SELECT value AS el, COUNT(*)
FROM(SELECT n0, n1, n2 from npi) AS n
,TABLE(FLATTEN(input => array_construct(n.n0, n.n1, n.n2)))
GROUP BY value;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349930.html
