2014-02-28 2 views
9

Oracle에서 PIVOT을 사용하려고하는데 이상한 결과가 나타납니다. 아마 내가 설정해야 할 옵션 일 수도 있지만 오라클/SQL에 관해서는이 주석 상자에 들어갈 수 있습니다. 여기 Oracle 피벗 쿼리는 열 이름을 따옴표로 묶은 열을 제공합니다. 뭐?

내 쿼리의 예 : 나는 열 이름을 제외하고 예상 두꺼비에서 (주위 사진을 작은 따옴표를 가지고

with testdata as 
(
    select 'Fred' First_Name, 10 Items from dual 
    union 
    select 'John' First_Name, 5 Items from dual 
    union 
    select 'Jane' First_Name, 12 Items from dual 
    union 
    select 'Fred' First_Name, 15 Items from dual 
) 

select * from testdata 
pivot (
    sum(Items) 
    for First_Name 
    in ('Fred','John','Jane') 

결과가 나올 - 나는 엑셀로 내보낼 경우 따옴표가 Excel로 흥분) :

Toad Data Grid

어떻게 내가 열 이름 주위에 따옴표를 제거합니까? 나는 절 "에서"그들을 밖으로 데리고 시도하고 오류가 발생합니다 :

in (Fred,John,Jane) 

Error message

내가 큰 따옴표와 작은 따옴표를 대체 노력하고 같은 오류가 발생했습니다. 이것이 오라클 옵션인지 모릅니다. 쿼리 또는 Toad를 실행하기 전에 설정/해제해야합니다.

+0

는 두꺼비의 문제가 아닌 SQL이 될 수 있음 하나. – Mihai

+6

'IN'안에 열 별칭을 제공 할 수 있습니다. [oracle docs] (http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html) – Taryn

+0

My Duh를 참조하십시오. 필자는 이틀 동안 Oracle Pivot 문서를 읽었으며 어떻게 든보고 싶었습니다. 고마워요 @bluefeet ... –

답변

27

'IN'절에서 새 열에 별칭을 제공 할 수 있습니다. 여러 조항이있는 경우 필요 당신의 집계 절에도

select * from testdata 
pivot (
     sum(Items) 
     for First_Name 
     in ('Fred' as fred,'John' as john,'Jane' as jane) 
    ) 

..

select * from testdata 
pivot (
    sum(Items) itmsum, 
    count(Items) itmcnt 
    for First_Name 
    in ('Fred' as fred,'John' as john,'Jane' as jane) 
    ) 

반환

FRED_ITMSUM FRED_ITMCNT JOHN_ITMSUM JOHN_ITMCNT JANE_ITMSUM JANE_ITMCNT 
----------- ----------- ----------- ----------- ----------- ----------- 
     25   2   5   1   12   1 
관련 문제