2016-01-03 19 views
0

所以我創建了一個視圖,在這個視圖中我有person_id's,account_id's,日期,付款方式和價值。 在付款方式我指定了兩種不同的:取款和存款。退出顯示爲負值。 我現在想要做的是打印出所有account_id的提款和存款總和爲負。SQLite usin Sum() - 在VIEW中的功能

這是我的CREATE VIEW代碼:

CREATE VIEW payment 
    (personID, AacountID, date, payment_method, value) 
AS SELECT pers_id, acc_id, date, 'deposit', value 
    FROM deposit 
UNION ALL 
SELECT pers_id, acc_id, date, 'withdrawal', -value 
FROM withdrawal 

我不允許使用的總和() - 函數創建視圖語句中,我必須使用一個查詢視圖上打印出所有帳戶總體負值。 我一直在尋找一段時間,但我只是發現如何使用創建視圖語句中的函數。

+0

你是什麼意思與 「不允許」?你有錯誤嗎? –

回答

0

我想現在要做的就是打印出所有ACCOUNT_ID的地方取款和存款的總和 爲負

我不能用SUM()功能在創建視圖語句

您可以使用視圖內聚合:

CREATE VIEW payment 
AS 
SELECT acountID, SUM("value") AS total 
FROM (
    SELECT acc_id AS acountID, "value" 
    FROM deposit 
    UNION ALL 
    SELECT acc_id, -"value" 
    FROM withdrawal) AS sub 
GROUP BY acountID; 

SELECT * 
FROM payment 
WHERE total < 0; 

SqlFiddleDemo

請記住,使用關鍵字,如date/value是不好的做法。如果你真的需要他們用"加入。

編輯:

「我不允許使用SUM() - 在創建視圖語句中的功能」

還有一個試用,使用您的視圖,並添加簡單聚合與使用HAVING後聚集過濾:

CREATE VIEW payment 
AS 
SELECT pers_id, acc_id AS accountID, "date", 'deposit' AS payment_method, "value" 
FROM deposit 
UNION ALL 
SELECT pers_id, acc_id, "date", 'withdrawal', -"value" 
FROM withdrawal; 

查詢:

SELECT accountId, SUM("value") AS total 
FROM payment 
GROUP BY accountId 
HAVING total < 0; 

SqlFiddleDemo2

+0

首先,謝謝你的回答,但我很抱歉,因爲我認爲我表達了我的問題。我把'不能使用sum() - 函數'改爲'我現在不允許使用'。我想現在很清楚。 – grantelbart

+0

@grantelbart查看已更新。無論如何,你的問題對我來說還是有點不清楚。 – lad2025