我有一個名爲wallet
的表,它記錄所有錢包事務。假設用戶可以通過4種方式向錢包添加資金,即我有相應的列的credit_src1,credit_src2,credit_src3,credit_src4
。此外,用戶可以從他們的賬戶中扣款,所以我有一個相應的列。 每筆交易的信用卡或借記卡都記錄在相應的交易ID表中。用戶只能對事務標識執行一項操作。SQL - 分配/減去多列中的列
我想檢索當用戶從錢包中扣除時每個信用源中剩餘的相應金額。假設從每個來源平均扣除金額。如果量在一列到達0時,它被平等地從剩餘的列中扣除,直到達到那些0
這是源表:
ID src1 src2 src3 src4 debit
==========================================
1 10 0 0 0 0
2 10 0 0 0 0
3 0 50 0 0 0
4 0 0 40 0 0
5 0 0 0 0 30
6 0 0 0 0 70
目標表應該是所有來源減去等於借方的累加值從各個來源:
ID src1 src2 src3 src4 debit
==========================================
1 10 0 0 0 0
2 20 0 0 0 0
3 20 50 0 0 0
4 20 50 40 0 0
5 10 40 30 0 30
6 0 20 10 0 70
我可以用這個查詢
SELECT
SUM(src1) OVER (ORDER BY ID),
SUM(src2) OVER (ORDER BY ID),
SUM(src3) OVER (ORDER BY ID),
SUM(src1) OVER (ORDER BY ID)
FROM wallet
獲得的各種來源的資金總和
我無法弄清楚如何平均分配所有來源的借項金額。任何形式的幫助將不勝感激。
http://sqlfiddle.com/#!15/893c6/4
的客戶對於這種操縱的,你應該使用存儲過程邏輯(CREATE FUNCTION ),或者使用連接到數據庫的編程語言。 – trincot
我認爲實現這一目標的唯一方法是使用遞歸CTE,而BigQuery不支持。 –
你將如何使用遞歸CTE或程序來做到這一點? – Ayush