2017-08-04 101 views
0

我有以下查詢分組甲骨文樞軸導致

SELECT * FROM tblCommissionNew 
PIVOT(Sum(cost) 
for stage in (1,2,3)) 
where quote_id=207 

這產生2行,因爲有在階段1和2的值

電流輸出

COMMISSIONID CONSUMPTION QUOTE_ID CALC_DATE COMM_PAID STATEMENT_ID COMM_PAY_DATE 1  2  3 
    449   9560  207   06-FEB-17 N   5        38.24  
    95010  4780  207   30-JUN-17    2472           19.12 

(對不起,不知道如何正確格式化)

是否有可能將這些結果分組,所以我的輸出可能是

Quote ID/Stage 1/Stage 2/Stage 3 
207/32.77/44.98/null 
+0

,你能否告訴我們原來的行?當我剛創建一個表格並插入兩行這些值時,我會得到您想要的確切輸出。 –

+0

@PatrickH編輯 – user1936588

回答

1

樞紐本質上是一種分組。這裏的問題在於你保留了每行不同的所有列,如COMMISSIONID。任何你沒有放在數據透視表中的東西,但是你在select語句中包含的內容將被分組。所有你需要做的修復你的代碼只是在你進行透視之前先從表中獲取你需要的列。在下面的示例中,我首先獲取QUOTE_ID,STAGE和COST,然後在旋轉前將其包裝在select語句中。

with tblCommissionNew as 
(select 449 COMMISSIONID,9560 CONSUMPTION, 207 quote_id, '06-FEB-17' CALC_DATE, 'N' COMM_PAID, 1 stage, 32.77 cost from dual 
    union all 
select 95010, 4780, 207,'30-JUN-17',null, 2, 44.98 from dual 
) 

select * from(
select QUOTE_ID, STAGE, COST 
from tblCommissionNew 
) 
pivot(sum(cost) 
for stage in (1,2,3)) A 
where quote_id = 207 

輸出:

QUOTE_ID 1  2  3 
207   32.77 44.98 
0

起初消除列你不感興趣,使支點:

select * 
    from (select quote_id, stage, cost from tblCommissionNew where quote_id = 207) 
    pivot(sum(cost) for stage in (1,2,3))