2016-08-12 5 views
-1

나는 두 개의 tab을 가지고 있습니다. 처음에는 어떤 유형의 할인을 시작한시기와시기 (8 가지 유형의 할인이 있지만 두 가지 범주로 나누기)에 대한 데이터가 있습니다. 할인은 6 개월이지만 매월 감소하고 할인 시작 날짜는 모든 사람마다 다릅니다. 두 번째 테이블에는 트랜잭션이 있습니다.그룹 by 다른 날짜

첫 번째 달 및 두 번째 범주 사람의 첫 번째 범주에서 얼마나 많은 거래가 얼마나 높은지 알고 싶습니다. 당신의 필요를 이해하려고 노력

SELECT (CASE WHEN Trunc(Months_Between(A.DATE_TRANS, B.DATA_DISCOUNT))=0 THEN 0 
    WHEN Trunc(Months_Between(A.DATE_TRANS, B.DATE_DISCOUNT))=1 THEN 1 
    WHEN Trunc(Months_Between(A.DATE_TRANS, B.DATE_DISCOUNT))=2 THEN 2 
    WHEN Trunc(Months_Between(A.DATE_TRANS, B.DATE_DISCOUNT))=3 THEN 3 
    WHEN Trunc(Months_Between(A.DATE_TRANS, B.DATE_DISCOUNT))=4 THEN 4 
    WHEN Trunc(Months_Between(A.DATE_TRANS, B.DATE_DISCOUNT))=5 THEN 5 
    END) 
    AS MONTH, 
    CASE WHEN A.TYPE IN (5,6,7,8) THEN COUNT(A.PRICE) 
    END AS COUNT_TRANS_1, 
    CASE WHEN A.TYPE IN (5,6,7,8) THEN SUM(A.PRICE) 
    END AS SUM_PRICE_1, 
    CASE WHEN A.TYPE IN (1,2,3,4) THEN COUNT(A.PRICE) 
    END AS COUNT_TRANS_2, 
    CASE WHEN A.TYPE IN (1,2,3,4) THEN SUM(A.PRICE) 
    END AS SUM_PRICE_2 
from DATABASE_1 A join DATABASE_2 B 
on A.ID=B.ID 
where Trunc(Months_Between(A.DATE_TRANS, B.DATE_DISCOUNT)) IN (0,1,2,3,4,5) 
GROUP BY A.ID, MONTH 
+0

필요가 명확해질 수 있도록 몇 가지 샘플 데이터와 원하는 결과를 게시하십시오. 다른 사람들 사이에서 '왜 Trunc (Months_Between (A.DATE_TRANS, B.DATE_DISCOUNT)) = 1 THEN 1'과 같은 것들이 있습니까? 'Trunc (Months_Between (A.DATE_TRANS, B.DATE_DISCOUNT)) '와 같지 않습니까? – Aleksej

답변

0

, 아마도 다음이 필요합니다

SELECT Trunc(Months_Between(A.DATE_TRANS, B.DATE_DISCOUNT)) AS MONTH, 
    COUNT(
     CASE 
      WHEN A.TYPE IN (5,6,7,8) 
       THEN A.PRICE 
      ELSE NULL 
     END 
     ) AS COUNT_TRANS_1, 
    SUM(
     CASE 
      WHEN A.TYPE IN (5,6,7,8) 
       THEN A.PRICE 
      ELSE 0 
     END 
    ) AS SUM_PRICE_1, 
    COUNT(
     CASE 
      WHEN A.TYPE IN (1,2,3,4) 
       THEN A.PRICE 
      ELSE NULL 
     END 
     ) AS COUNT_TRANS_2, 
    SUM(
     CASE 
      WHEN A.TYPE IN (1,2,3,4) 
       THEN A.PRICE 
      ELSE 0 
     END 
    ) AS SUM_PRICE_2 
from DATABASE_1 A join DATABASE_2 B 
on A.ID=B.ID 
where Trunc(Months_Between(A.DATE_TRANS, B.DATE_DISCOUNT)) IN (0,1,2,3,4,5) 
GROUP BY A.ID, Trunc(Months_Between(A.DATE_TRANS, B.DATE_DISCOUNT)) 

난 당신이 ID에 의해 그룹에 필요 확실하지 않다, 그것을 확인.

+0

모든 것이 작동합니다! 고마워요! –