2016-08-12 34 views
-1

我有两个表格。首先是开始某种类型的折扣(有8种类型的折扣,但我们将它们分为两类)的数据。折扣有效期为6个月,但每个月减少,每个人的折扣开始日期不同。 在第二个表中是交易。分组依据,不同日期

我想知道第一个月,第二个等第一类折扣和第二类人做了多少交易和多高。

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

请张贴一些样本数据和期望的结果,以便您的需求可以更清晰;在其他人当中,为什么像'WHEN 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

一切正常!非常感谢你 ! –