2013-05-21 2 views
0

나는 쿼리MySQL의 피벗 쿼리

SELECT ps_target_ecpm, ps_actual_ecpm 
FROM publisher_stats 
JOIN domain ON domain.dmn_id = ps_dmn_id 
LEFT JOIN langue ON langue.lng_id = domain.default_lng_id 
WHERE MONTH(ps_month) = 05 

에게 내가

may_target_ecmp, may_actual_ecpm, april_target_ecpm, april_actual_ecpm, march_target_ecpm, march_actual_ecpm과 같아야 필요로하는 결과를 가지고하는 데 사용됩니다.

4 월 MONTH (ps_month) = 04 및 3 월 MONTH (ps_month) = 03 에 대해 각각. 몇 가지 질문 후

주위에 내가 필요 꽤 무엇을 내가 얻을이

SELECT 
(CASE WHEN MONTH(ps_month) = 4 THEN ps_target_ecpm ELSE 0 END) AS april_target_ecpm, 
(CASE WHEN MONTH(ps_month) = 4 THEN ps_actual_ecpm ELSE 0 END) AS april_actual_ecpm, 
(CASE WHEN MONTH(ps_month) = 3 THEN ps_target_ecpm ELSE 0 END) AS march_target_ecpm, 
(CASE WHEN MONTH(ps_month) = 3 THEN ps_actual_ecpm ELSE 0 END) AS march_actual_ecpm 
FROM publisher_stats 
JOIN domain ON domain.dmn_id = ps_dmn_id 
LEFT JOIN langue ON langue.lng_id = domain.default_lng_id 

결과 집합처럼 보이는 쿼리와 함께 끝났다. 예 응답은 다음과 같습니다

0   0  0.48 0.27 
0.48  0.47 0  0 

난 당신이 날이 쿼리가하기위한 것입니다 무엇을 할 수 있도록하는 방법을 파악하는 데 도움이 시겠어요 한 행

0.48 0.47 0.48 0.27 

에있을 필요하지만. 사전

P.S.에서 감사합니다 mysql pivoting - how can I fetch data from the same table into different columns?

답변

2

그냥 예를 들어 MAX 잘 작동하지만 여러 개인 경우, 매달 총을 얻을해야하는 경우가 SUM을 사용해야 할 수도, 집계 함수를 사용 -이 질문은이 질문에서 모든 방법을 올 매월 ps_target_ecpm에 대한 항목입니다. 이처럼 :

SELECT 
    MAX(CASE WHEN MONTH(ps_month) = 4 THEN ps_target_ecpm ELSE 0 END) AS april_target_ecpm, 
    MAX(CASE WHEN MONTH(ps_month) = 4 THEN ps_actual_ecpm ELSE 0 END) AS april_actual_ecpm, 
    MAX(CASE WHEN MONTH(ps_month) = 3 THEN ps_target_ecpm ELSE 0 END) AS march_target_ecpm, 
    MAX(CASE WHEN MONTH(ps_month) = 3 THEN ps_actual_ecpm ELSE 0 END) AS march_actual_ecpm 
FROM publisher_stats 
JOIN domain ON domain.dmn_id = ps_dmn_id 
LEFT JOIN langue ON langue.lng_id = domain.default_lng_id 
+0

+1 나는 SUM보다는 MAX를 제안한다. –

+0

@MarkBannister - 그는 매월 ps_target_ecpm''에 대해 여러 항목이있는 경우 총을 원할 경우 샘플 데이터를 기반으로 모두가'SUM'을 정확한 결과를 제공하지만 것입니다. 이 메모를 추가했습니다. 감사합니다. –

+0

얘들 아, 정말 고마워, 그것은 매력처럼 작동합니다!. 방금 GROUP BY dmn_id를 추가해야했습니다. –