使用SQL的累积遗留问题

使用SQL的累积遗留问题,sql,sybase,Sql,Sybase,我使用的是sybase的旧版本,它没有像lead这样的关键字 我想找到剩下的 让我试着用一个例子来解释这一点 StartQuantity=500 Category Time Quantity LeftOver cat1 10:01:01.000 100 400 cat1 10:01.01.001 50 350 cat1 10:01:01.002 0

我使用的是sybase的旧版本,它没有像lead这样的关键字

我想找到剩下的

让我试着用一个例子来解释这一点

StartQuantity=500

Category Time Quantity LeftOver cat1 10:01:01.000 100 400 cat1 10:01.01.001 50 350 cat1 10:01:01.002 0 350 cat1 10:01.01.003 100 250 cat1 10:01:03.001 100 150 类别时间剩余量 cat1 10:01:01.000 100 400 cat1 10:01.01.001 50 350 cat1 10:01:01.002 0 350 cat1 10:01.01.003 100 250 cat1 10:01:03.001 100 150 cat2中也有类似的行,每个类别的行数是可变的


请注意,在上面我按时间升序排列了行。

我不知道Sybase是否支持这一点,但在PostgreSQL、Oracle和其他语言中,您可以这样做

select category,
       time,
       quantity, 
       500 - sum(quantity) over (partition by category order by time) as leftover
from the_unknown_table;
order by category, time
选择类别,总和(500-(数量)) 从表\u名称 按类别分组

选择类别,(计数(1)*500)-总和(数量) 从表\u名称
按类别分组

500-
sum(数量)over(按类别按时间顺序划分)
如何在符合标准的数据库中生成一个运行的
sum()
。您能给我写一个详细的代码吗。我对SQL不是很在行。谢谢,我会尝试一下。我使用上面的代码得到以下错误:语法错误-按键排序必须是范围窗口框架中的数字数据。谁能帮忙吗。谢谢。@user1949158那么什么是datatime
TIME
?我数据库中的时间类型是“timestamp”。因此,我的数据库中的时间示例是:“2012-03-23 11:27:04.870000”。Thanks@user1949158:显然Sybase不支持这一点,因为它可以在Oracle或PostgreSQL中工作。