所以我创建了一个视图,在这个视图中我有person_id,account_id,日期,付款方式和价值。 在付款方式中,我指定了两个不同的:提款和存款。退出显示为负值。 我现在要做的是打印出所有的账户,其中提款和存款的总和是负数。
这是我的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
我不允许在create view语句中使用sum() - 函数,我必须在视图上使用查询来打印出具有整体负值的所有帐户。 我一直在寻找一段时间,但我刚刚找到了如何在create view语句中使用该函数。
答案 0 :(得分:0)
我现在要做的是打印出所有account_id的总和 提款和存款是负面的
和
我不能在create view语句中使用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
强>