1

私は Oracle Analytics を初めて使用します。誰でも次の解決を手伝ってもらえますか。

SELECT year,
           month,
           week,
           C.cpg_pk                                                        CPG,
           C.dep_pk                                                        DEPT,
           T.cust_id                                                       CUST_ID,
           D1.r_id                                                         R_ID,
           Decode(d2.at_code, '3', func1.Get_att(d2.at_code, D2.val_code)) AS P1,
           Decode(d2.at_code, '2', func1.Get_att(d2.at_code, D2.val_code)) AS IC,
           Decode(d2.at_code, '1', func1.Get_att(d2.at_code, D2.val_code)) AS B1,
           Decode(func1.Get_att(d2.at_code, D2.val_code), 2, d2.at_code)   AS P2,
           Decode(func1.Get_att(d2.at_code, D2.val_code), 5, d2.at_code)   AS B2,
           Count(DISTINCT A.cust_id)                                       TOTAL_ACC
           ,
           Count(DISTINCT T.txn_pk)
           TOTAL_TXN,
           SUM(am_amount)                                                  TOTAL_AMT
    FROM   t_header T,
           cust_master A,
           tx_details1 D1,
           tx_details2 D2,
           cpg_master C
    WHERE  A.TYPE = 0
           AND T.cust_id = A.cust_id
           AND T.txn_pk = 5001
           AND T.txn_pk = D1.txn_pk
           AND T.txn_pk = D2.txn_pk
           AND D1.cpg_pk = C.cpg_pk
           AND D1.op = 1
    GROUP  BY year,
              month,
              week,
              C.cpg_pk,
              C.dep_pk,
              t.cust_id,
              D1.r_id,
              Decode(d2.at_code, '3', func1.Get_att(d2.at_code, D2.val_code)),
              Decode(d2.at_code, '2', func1.Get_att(d2.at_code, D2.val_code)),
              Decode(d2.at_code, '1', func1.Get_att(d2.at_code, D2.val_code)),
              Decode(func1.Get_att(d2.at_code, D2.val_code), 2, d2.at_code),
              Decode(func1.Get_att(d2.at_code, D2.val_code), 5, d2.at_code) 

生成される出力は次のとおりです。

YEAR    MONTH   WEEK    CPG DEPT    CUST_ID R_ID    P1  IC  B1  P2  B2   TOTAL
2012    08      32     127 -1      10019   3665                     134   23100.09   
2012    08      32     127 -1      10019   3665                     135   23100.09  
2012    08      32     127 -1      10019   3665             723           23100.09  
2012    08      32     127 -1      10019   3665        714                23100.09
2012    08      32     127 -1      10019   3665                  41       23100.09
2012    08      32     127 -1      10019   3665                  42       23100.09
2012    08      32     127 -1      10019   3665     21                    23100.09
2012    08      32     128 -1      10019   3665                      134  23100.09 
2012    08      32     128 -1      10019   3665                      135  23100.09 
2012    08      32     128 -1      10019   3665             723           23100.09 
2012    08      32     128 -1      10019   3665        714                23100.09 
2012    08      32     128 -1      10019   3665                  41       23100.09
2012    08      32     128 -1      10019   3665                  42       23100.09
2012    08      32     128 -1      10019   3665     21                    23100.09

ここでは、値が繰り返されています。で繰り返しをなくそうとしましたgroup byが、うまくいきませんでした。私たちを手伝ってくれますか?

必要な出力は次のとおりです。

YEAR    MONTH   WEEK    CPG DEPT    CUST_ID R_ID    P1  IC  B1  P2  B2  TOTAL_AMT
---------------------------------------------------------------------------------
2012    08      32      127 -1      10019   3665    21  714 723  41   134 23100.09
2012    08      32      127 -1      10019   3665    21  714 723  41   135 23100.09
2012    08      32      127 -1      10019   3665    21  714 723  42   134 23100.09
2012    08      32      127 -1      10019   3665    21  714 723  42   135 23100.09
2012    08      32      128 -1      10019   3665    21  714 723  41   134 23100.09
2012    08      32      128 -1      10019   3665    21  714 723  41   135 23100.09
2012    08      32      128 -1      10019   3665    21  714 723  42   134 23100.09
2012    08      32      128 -1      10019   3665    21  714 723  42   135 23100.09

主なものはyearmonthweekcpgdeptcust_idr_idp1ic、一意の行b1である必要があります。分析関数を使用して達成可能ですか、それとも PL/SQL を作成する必要がありますか? 私の質問は賢明ですか?p2b2

4

1 に答える 1

1

with t1 as( select 2012 YEAR1, 08 MONTH1, 32 WEEK, 127 CPG, -1 DEPT, 10019 CUST_ID, 3665 R_ID, null P1, null IC, 723 B1,null P2, null B2, 23100.09 TOTAL from dual union all -- select 2012, 08, 32, 127, -1, 10019, 3665, null, null, null, null, 135 , 23100.09 from dual union all -- 2012, 08, 32, 127, -1, 10019, 3665, null を選択, null, null , null, 134, 23100.09 from dual union all select 2012, 08, 32, 127, -1, 10019, 3665, null, 714 , null, null, null, 23100.09 from dual union all -- select 2012, 08, 32, 127, -1, 10019, 3665, null, null ,null, 41, null, 23100.09 デュアル ユニオン all から -- 2012, 08, 32, 127, -1, 10019, 3665, null, null, null, 42, null, 23100.09 from dual union all -- 2012、08、32、127、-1、10019、3665、21、null、null、null、null、23100 を選択します。デュアル ユニオンのすべてから 09 -- 2012, 08, 32, 128, -1, 10019, 3665, null, null, null, null, 134 , 23100.09 をデュアル ユニオンのすべてから選択 -- 2012, 08, 32, 128, - を選択1、10019、3665、null、null、null、null、135、デュアル ユニオンから 23100.09 すべて選択 2012、08、32、128、-1、10019、3665、null、null、723、null、null、デュアルから 23100.09 union all select 2012, 08, 32, 128, -1, 10019, 3665, null, 714 , null, null, null, 23100.09 from dual union all -- 2012, 08, 32, 128, -1, 10019, 3665 を選択, null, null ,null, 41, null, 23100.09 from dual union all -- 2012, 08, 32, 128, -1, 10019, 3665, null, null, null, 42, null, 23100.09 from dual union all - - Dual から 2012、08、32、128、-1、10019、3665、21、null、null、null、null、23100.09 を選択) t1p1.YEAR1、t1p1.month1、t1p1 を選択。week, t1p1.cpg, t1p1.dept, t1p1.cust_id, t1p1.r_id, t1p1.p1,t1ic.ic, t1b1.b1, t1p2.p2, t1b2.b2, t1p1.total from (YEAR1、month1、week、 cpg, dept, cust_id, r_id, p1 , p1 が null でない t1 からの合計) t1p1, (ic が null でない t1 から YEAR1, month1, week, cpg, dept, cust_id, r_id, ic を選択) t1ic, (select YEAR1, month1, week, cpg, dept, cust_id, r_id, b1 からの b1 (b1 は null ではない) t1b1, (year1, month1, week, cpg, dept, cust_id, r_id, p2 が null でない t1 からの p2 を選択) t1p2、(b2 がヌルでない t1 から YEAR1、month1、week、cpg、dept、cust_id、r_id、b2 を選択)および t1p1.year1 = t1p2.year1(+) および t1p1.year1 = t1b2.year1(+) および t1p1.month1 = t1ic.month1(+) および t1p1.month1 = t1b1.month1(+) および t1p1.month1 = t1p2 .month1(+) と t1p1。month1 = t1b2.month1(+) および t1p1.week = t1ic.week(+) および t1p1.week = t1b1.week(+) および t1p1.week = t1p2.week(+) および t1p1.week = t1b2.week( +) および t1p1.cpg = t1ic.cpg(+) および t1p1.cpg = t1b1.cpg(+) および t1p1.cpg = t1p2.cpg(+) および t1p1.cpg = t1b2.cpg(+) および t1p1.dept = t1ic.dept(+) および t1p1.dept = t1b1.dept(+) および t1p1.dept = t1p2.dept(+) および t1p1.dept = t1b2.dept(+) および t1p1.cust_id = t1ic.cust_id(+ ) および t1p1.cust_id = t1b1.cust_id(+) および t1p1.cust_id = t1p2.cust_id (+) および t1p1.cust_id = t1b2.cust_id(+) および t1p1.r_id = t1ic.r_id(+) および t1p1.r_id = t1b1.r_id(+) および t1p1.r_id = t1p2.r_id (+) および t1p1.r_id = t1b2.r_id(+) t1p1.YEAR1、t1p1.month1、t1p1.week、t1p1.cpg、t1p1.dept、 t1p1.cust_id、t1p1.r_id、t1p1.p1、t1ic.ic、t1b1.b1、t1p2.p2、t1b2.b2 /week(+) および t1p1.week = t1b2.week(+) および t1p1.cpg = t1ic.cpg(+) および t1p1.cpg = t1b1.cpg(+) および t1p1.cpg = t1p2.cpg(+) および t1p1 .cpg = t1b2.cpg(+) および t1p1.dept = t1ic.dept(+) および t1p1.dept = t1b1.dept(+) および t1p1.dept = t1p2.dept(+) および t1p1.dept = t1b2.dept (+) および t1p1.cust_id = t1ic.cust_id(+) および t1p1.cust_id = t1b1.cust_id(+) および t1p1.cust_id = t1p2.cust_id (+)および t1p1.cust_id = t1b2.cust_id(+) および t1p1. r_id = t1ic.r_id(+) および t1p1.r_id = t1b1.r_id(+) および t1p1.r_id = t1p2.r_id (+) および t1p1.r_id = t1b2.r_id(+) t1p1.YEAR1、t1p1.month1 順、t1p1.week、t1p1.cpg、t1p1.dept、t1p1.cust_id、t1p1.r_id、t1p1.p1、t1ic.ic、t1b1.b1、t1p2.p2、t1b2.b2 /week(+) および t1p1.week = t1b2.week(+) および t1p1.cpg = t1ic.cpg(+) および t1p1.cpg = t1b1.cpg(+) および t1p1.cpg = t1p2.cpg(+) および t1p1 .cpg = t1b2.cpg(+) および t1p1.dept = t1ic.dept(+) および t1p1.dept = t1b1.dept(+) および t1p1.dept = t1p2.dept(+) および t1p1.dept = t1b2.dept (+) および t1p1.cust_id = t1ic.cust_id(+) および t1p1.cust_id = t1b1.cust_id(+) および t1p1.cust_id = t1p2.cust_id (+)および t1p1.cust_id = t1b2.cust_id(+) および t1p1. r_id = t1ic.r_id(+) および t1p1.r_id = t1b1.r_id(+) および t1p1.r_id = t1p2.r_id (+) および t1p1.r_id = t1b2.r_id(+) t1p1.YEAR1、t1p1.month1 順、t1p1.week、t1p1.cpg、t1p1.dept、t1p1.cust_id、t1p1.r_id、t1p1.p1、t1ic.ic、t1b1.b1、t1p2.p2、t1b2.b2 /dept = t1b1.dept(+) および t1p1.dept = t1p2.dept(+) および t1p1.dept = t1b2.dept(+) および t1p1.cust_id = t1ic.cust_id(+) および t1p1.cust_id = t1b1.cust_id( +) および t1p1.cust_id = t1p2.cust_id (+) および t1p1.cust_id = t1b2.cust_id(+) および t1p1.r_id = t1ic.r_id(+) および t1p1.r_id = t1b1.r_id(+) および t1p1.r_id = t1p2.r_id (+) および t1p1.r_id = t1b2.r_id(+) t1p1.YEAR1、t1p1.month1、t1p1.week、t1p1.cpg、t1p1.dept、t1p1.cust_id、t1p1.r_id、t1p1 の順序。 p1,t1ic.ic, t1b1.b1, t1p2.p2, t1b2.b2 /dept = t1b1.dept(+) および t1p1.dept = t1p2.dept(+) および t1p1.dept = t1b2.dept(+) および t1p1.cust_id = t1ic.cust_id(+) および t1p1.cust_id = t1b1.cust_id( +) および t1p1.cust_id = t1p2.cust_id (+) および t1p1.cust_id = t1b2.cust_id(+) および t1p1.r_id = t1ic.r_id(+) および t1p1.r_id = t1b1.r_id(+) および t1p1.r_id = t1p2.r_id (+) および t1p1.r_id = t1b2.r_id(+) t1p1.YEAR1、t1p1.month1、t1p1.week、t1p1.cpg、t1p1.dept、t1p1.cust_id、t1p1.r_id、t1p1 の順序。 p1,t1ic.ic, t1b1.b1, t1p2.p2, t1b2.b2 /t1p1.dept、t1p1.cust_id、t1p1.r_id、t1p1.p1、t1ic.ic、t1b1.b1、t1p2.p2、t1b2.b2 /t1p1.dept、t1p1.cust_id、t1p1.r_id、t1p1.p1、t1ic.ic、t1b1.b1、t1p2.p2、t1b2.b2 /

于 2012-10-27T04:08:39.657 に答える