최선의 방법은 SQL 에서는 자기에 가입하는 세 필드 표래는없는 키 값을 할당받을 키고 특정 계산

0

질문

우리는 테이블:

_count
a b 3
c d 2

우리가 원하는 확장하는 등 각 키에 매핑되는 각기 다른 가치에 테이블을 가져옵 _count 0 의 경우에는 키-값 쌍하지 않았 이미 계산합니다. 예를 들어,위의 표시:

_count
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;

하지만 나는 의심이 있을 수 있습 쉽게/읽기/더 효율적으로 구현하는 방법이 어떤 방법이 있나요?

sql
2021-11-23 23:43:46
1

최고의 응답

1

사용할 수 있습니다 cross joinleft join 짧은 솔루션:

select t1.key, t2.value, coalesce(t3._count, 0) from tbl t1 
cross join tbl t2 left join tbl t3 on t1.key = t3.key and t2.value = t3.value;
2021-11-23 23:57:34

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................