我是Oracle Analytics的新手。任何人都可以幫我解決以下問題。Oracle分析函數用法
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
最主要的是year
,month
,week
,cpg
,dept
,cust_id
,r_id
,p1
,ic
,b1
,p2
,b2
它應該是唯一的行。使用分析函數可以實現,還是需要編寫PL/SQL?我的問題很敏感嗎?
可能的重複[我可以在這裏使用Oracle分析函數嗎?](http://stackoverflow.com/questions/12614209/can-i-use-oracle-analytical-function-here) –
是的,但輸出不是給我期望的結果 – user1760970
因此,回答託尼的回答說爲什麼,並改進原來的問題 - 不要問一個相同的問題。請閱讀[FAQ](http://stackoverflow.com/faq)。 –