2015-11-09 50 views
0

在完成一些查詢後,我的oracle SQL開發人員得到了下面的結果。 figure 1如何合併(與獲取總和)在sql表中的一些重複的數據?

但我需要得到這樣的:

[figure 2]

我想在Cash_IN和Cash_out每個USER_ID獲取和合並。

這是我用得到上(第一圖)結果的SQL查詢:

SELECT User_ID, Cash_In, Cash_out 
FROM (SELECT wa.User_ID, count(tt.ID) Cash_In, 0 Cash_out 
     FROM mwt_wallet_transactions t, mwt_txn_types tt, mwt_user_wallet wa 
     WHERE t.txn_code = tt.ID and 
     t.a_number = wa.id and 
     tt.ID = '1' 
     GROUP BY wa.User_ID) 

UNION ALL 

SELECT User_ID, Cash_In, Cash_out 
FROM (SELECT wa.User_ID, 0 Cash_In, count(tt.ID) Cash_out 
     FROM mwt_wallet_transactions t, mwt_txn_types tt, mwt_user_wallet wa 
     WHERE t.txn_code = tt.ID and 
     t.a_number = wa.id and 
     tt.ID = '2' 
     GROUP BY wa.User_ID) 
ORDER BY User_ID; 
+1

爲什麼MySQL的標籤? (不要標記沒有涉及的產品...) – jarlh

+0

爲什麼你在第二選擇中有'GROUP BY wa.mobile_no'?它不能工作 - 你在'SELECT'中有'wa.User_ID',所以它應該是'GROUP BY'中的'wa.User_ID' – Tatiana

+0

@Tatiana,抱歉它應該是wa.User_ID。在編輯題。 –

回答

3

試試這個:

SELECT User_ID, Cash_In, Cash_out 
FROM 
(SELECT wa.User_ID, count(case when tt.ID = '1' then 1 else null end) Cash_In, 
     count(case when tt.ID = '2' then 1 else null end) Cash_out 
FROM mwt_wallet_transactions t, mwt_txn_types tt, mwt_user_wallet wa 
WHERE t.txn_code = tt.ID and 
t.a_number = wa.id 
GROUP BY wa.User_ID) 
ORDER BY mobile_no; 
+1

非常感謝,效果很好。 –

相關問題