在Terbitration中,我有一个查询,可以返回日期、姓名首字母、销售额和交货额.

SELECT
 date, initial, sales, deliveries
FROM sample

我想创建一个新列,作为手头的流动余额,其中的计算是BOH =初始-销售额+交付额.然而,当首字母为非零时,boh计算不应在第一个日期开始.

以下是列boh最好返回的内容.我该如何为此构建查询?

date  initial  sales  deliveries   boh
---------------------------------------
01-01    0       2        4         0       
01-02    0       0        0         0
01-03    3       1        0         2
01-04    0       4        8         6
01-05    0       2        2         6
01-06    0       1        3         8

推荐答案

您可以计算最早的日期,并在需要执行计算时使用它来确定.

SELECT 
"date", "initial", "sales", 
SUM(CASE WHEN "date" >= (SELECT MIN("date") FROM tmytable WHERE initial > 0) 
  then  ("initial" - sales + deliveries) 
  ELSE 0 END) OVER(ORDER bY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) boh
FROM tmYtable
date initial sales boh
01-01 0 2 0
01-02 0 0 0
01-03 3 1 2
01-04 0 4 6
01-05 0 2 6
01-06 0 1 8
SELECT 6

fiddle

Sql相关问答推荐

如何简化此表达以使搜索查询忽略标点符号?Microsoft Access 2007-2016

在Golang中管理数据库事务的简洁方法

如何隐藏聚合JSON数组元素的键

对列进行排序后,基于两列删除重复行

无法将发票与产品价格相关联

使用拆分器将已分组的不同值连接在一起

Haystack针相交-在元素最多的Haystack中查找集合

从JSON值数组创建扁平数组Athena

无法访问级联删除导致的触发器中已删除的外键记录

根据时间值提取记录

DB2 SQL查询结果多余数据

两个具有 NULL 值的表达式结果之间的差异

Postgresql 具有相似行为和模式行为的问题

如何为给定的股票数据集计算利润/亏损,确保先卖出先买入的股票

如何从一张表中获取值在至少三行相同的记录

如何在 DAX 中通过 Window 函数应用订单

Django only() 和 values() 不适用于 prefetch_related()

将单行中的多个行值转换为列

为什么这是 AND,OR with NULL 的真值表?

使用 json_agg 从 SQL 查询获取 [null] 响应