2014-02-17 1 views
0

ProductSales 테이블의 예입니다.크로스 탭에서 다음 작업을 수행하는 방법은 무엇입니까?

--table

productsales 값에 productsales에 기록

--Insert 몇 삽입 (테이블 productsales에게 ( 국가 VARCHAR (20), 세일즈맨 VARCHAR (20), 양의 정수)를 생성 'UK', 'Sam', 25000); ... ...

- 피벗 연산자를 사용하는 대신 plpgsql에서 "크로스 탭"에서 수행 할 쿼리입니다. 선택 세일즈맨, 영국, 미국, 아랍 에미리트 피벗을 productsales에서 -이 국가 IN ([영국], [미국], [UAE]) 에 대한) plpgsql에 을 ( 합 (양 작동하지 않습니다 알고) AS pt

답변

1

crosstab을 만들려면 tablefunc PostgreSQL과 함께 제공되는 모듈을 사용할 수 있습니다. 당신이 (당신은 PostgreSQL을 설치하는 방법에 따라 달라집니다 그 일을하는 방식)를 설치 한 다음 확장 만들 먼저해야

: 장소에두고

CREATE EXTENSION tablefunc; 

을, 당신은 당신의 crosstab 쿼리를 간단하게 할 수있는

SELECT * FROM crosstab($$ 
     /* Your normal query with your own filters (the fields must be always at the same order) */ 
     SELECT salesman, country, amount 
     FROM productsales 
     WHERE country IN ('UAE','UK','US') 
     /* The ORDER is really important here */ 
     ORDER BY 1, 2 
    $$, 
    /* The values that will be crossed, notice they are ordered alphabetically */ 
    $$VALUES('UAE'),('UK'),('US')$$ 
) AS 
/* Here you tell which columns and types you expect */ 
productsales(salesman varchar(20), uae integer, uk integer, us integer); 
+0

도움 주셔서 감사합니다. –

관련 문제