SQLite使用Sum() - VIEW中的函数

时间:2016-01-03 13:23:02

标签: sql sqlite view sum

所以我创建了一个视图,在这个视图中我有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语句中使用该函数。

1 个答案:

答案 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