2012-08-23 7 views
0

내가 가지고있는이 같은 구조 테이블 :이 같은 목록을 생성 할피벗 테이블이 간다 잘못된 (Select 문)

ID , AMOUNT 
'001', 17333935.00 
'005', 1883045.00 
'011', 29992400.00 
'015', 17547235.00 

:

| '001'  | '005'  | '011'  | '015' | 

| 17333935.00 | 1883045.00 | 29992400.00 | 17547235.00 | 

나는이 선택 문을 사용하려고 시도를, 하지만 작동하지 않습니다.

SELECT col1.ROW_RPT,col1.IDUSER,col1.SUBTOT,col2.SUBTOT,col3.SUBTOT 
FROM 
(SELECT 'OMSET' ROW_RPT,IDUSER,Sum(ORG_QTY*ORG_PRC) SUBTOT FROM sales WHERE IDUSER='001') col1 
INNER JOIN 
(SELECT 'OMSET' ROW_RPT,IDUSER,Sum(ORG_QTY*ORG_PRC) SUBTOT FROM sales WHERE IDUSER='005') col2 ON col2.ROW_RPT=col1.ROW_RPT INNER JOIN 
(SELECT 'OMSET' ROW_RPT,IDUSER,Sum(ORG_QTY*ORG_PRC) SUBTOT FROM sales WHERE IDUSER='011') col3 ON col3.ROW_RPT=col1.ROW_RPT INNER JOIN 
(SELECT 'OMSET' ROW_RPT,IDUSER,Sum(ORG_QTY*ORG_PRC) SUBTOT FROM sales WHERE IDUSER='015') col4 ON col3.ROW_RPT=col1.ROW_RPT 

위와 같은 데이터를 어떻게 추출 할 수 있습니까?

답변

1

당신은 다음과 같이 사용할 수 있습니다 -

SELECT 
    MAX(IF(id = '001', AMOUNT, NULL)) AS '001', 
    MAX(IF(id = '005', AMOUNT, NULL)) AS '005', 
    .. 
FROM 
    sales 

을하지만 id이 많이있을 수 있기 때문에, 좋은 생각이 아니다라고 생각합니다.

+0

실제로 많은 id가있을 수 있지만 SQL의 피벗 테이블을 수행하는 다른 방법이 있습니까? – Max

+0

MySQL은 PIVOT 명령을 지원하지 않으므로 쿼리를 그대로 작성하거나 자동화하려고 할 수 있습니다 - [동적 피벗 테이블 (행을 열로 변환)] (http://buysql.com/mysql/14-how -to-automate-pivot-tables.html). – Devart