[SQL] 오라클 피벗 연산자
SQL오라클 피벗 연산자
나는 오라클 피벗 새로운 오전. 이것이 가능한가?
나는 두 개의 열 유형과 가치를 가지고
type value
---------------
a a1
b b1
c c1
etc
나는 모든 단일 행에, 이런 식으로 뭔가를 얻을 수있을 것인가?
a b c
a1 b1 c1
이 같은 쿼리를 시도에 나는이 같은 출력을 얻고있다
select A,B from tbl
pivot (max(value) for type in ('a' as A,'b' as B))
------------------------------------
A B
null b1
a1 null
감사
해결법
-
==============================
1.당신은 아마도 고유 행과 피벗 연산자를 식별하는 열 (예를 들어 기본 키 열)를 포함하는 테이블 (당신의 TBL 테이블)에 대한 당신이 발행하는 간단하기 때문에 선택 문 같은 출력이 해당 열을 고려한 값으로한다 얻고있다. 다음은 간단한 예이다 :
당신은 아마도 고유 행과 피벗 연산자를 식별하는 열 (예를 들어 기본 키 열)를 포함하는 테이블 (당신의 TBL 테이블)에 대한 당신이 발행하는 간단하기 때문에 선택 문 같은 출력이 해당 열을 고려한 값으로한다 얻고있다. 다음은 간단한 예이다 :
/*assume it's your table tbl */ with tbl(unique_col, col1, col2) as( select 1, 'a', 'a1' from dual union all select 2, 'b', 'b1' from dual union all select 3, 'c', 'c1' from dual )
같은 테이블에 대해 쿼리는 당신에게 당신이 질문에 제공되는 출력 (바람직하지 않은 결과를) 제공합니다 :
select A,B from tbl pivot( max(col2) for col1 in ('a' as A,'b' as B) )
결과:
A B -- -- a1 null null b1
원하는 출력을 생성하기 위해, 당신은 행에 대한 고유 한 값을 가진 열을 제외해야 :
select A , B from (select col1 , col2 /*selecting only those columns we are interested in*/ from tbl ) pivot( max(col2) for col1 in ('a' as A,'b' as B) )
결과:
A B -- -- a1 b1
-
==============================
2.이 같은:
이 같은:
SELECT a, b, c FROM tbl PIVOT ( MAX(Value) FOR Type IN ('a' as a, 'b' as b, 'c' as c) )
자세한 내용은이 문서를 참조 할 수 있습니다.
from https://stackoverflow.com/questions/19280591/oracle-pivot-operator by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 아포스트로피와 데이터베이스에 SQL 삽입 (0) | 2020.06.18 |
---|---|
[SQL] WHERE 절에서 참조 별칭 (0) | 2020.06.18 |
[SQL] 심지어 테이블에 존재하지 않는 IN 목록의 요소에 대한 결과를 반환 (0) | 2020.06.18 |
[SQL] 룸 예약 쿼리 (0) | 2020.06.18 |
[SQL] 어떻게 CodeIgniter의의 활동 기록에이 SQL을 다시 작성할 수 있습니까? (0) | 2020.06.18 |