当查询总和超过零时'插入'

时间:2015-10-13 13:17:01

标签: sql firebird

我正在处理程序或查询,它每天检查数据,当数据大于零时,程序将另一个数据插入表中。

示例:十月的每一天我想查看

select
    sum(T.Amount)
from Table T
where

    T.Month = 10

union all

--check if I already insert this month
select
        -sum(T.Amount)
    from Result
    where
        T.Day = 1
        T.Month = 10

直到10月15日,我才得到0。但是在15日,此查询返回1500。现在我需要将这个数字插入到10月的前一天的另一个表中。所以最后我应该运行:

insert into Result (Amount, Day, Month)
  values (1500, n, 10)

其中N将是1到15。

然后所有剩余的日期(从15日到30日)都不会通过我的检查查询,并且不会再次插入此1500

我的问题

我的主要问题是,如果首次检查查询返回值大于0,如何实现此插入过程。我将使用它来创建图形,显示我第15天获得的数字,就像我第一天获得它一样。这意味着,图表将每天显示0,但是当我在15日获得某个数字时,此图表必须从第1天开始显示此数字。

这是我得到的,当我每天只运行查询时: enter image description here

这就是我需要的:

enter image description here

我的想法是(if查询)一些程序,如上所述,但我不确定它是否可行,或者我是否必须找到另一种解决方案。

1 个答案:

答案 0 :(得分:0)

应该可以使用group by和having子句。

INSERT INTO {tablename} <select_stmt> 

<select_stmt>   ::=  a SELECT whose result set fits the target columns

您必须以仅返回所需值的方式编写您的选择。