Sql 我需要递归函数-Teradata吗

Sql 我需要递归函数-Teradata吗,sql,teradata,Sql,Teradata,我有下表,需要计算可用房间。基本上,我需要从上面的行中获取计算字段,并使用它来计算当前行。我尝试了前面的函数,但无法重用计算字段 没有递归函数我们能做到吗?如果不是的话,递归也可以 +---------------------------------------------------------------------------------+ | TransactionDt | Total#ofrooms | RoomsSold | TotalRoomsAvailable | calcula

我有下表,需要计算可用房间。基本上,我需要从上面的行中获取计算字段,并使用它来计算当前行。我尝试了前面的函数,但无法重用计算字段

没有递归函数我们能做到吗?如果不是的话,递归也可以

+---------------------------------------------------------------------------------+
| TransactionDt | Total#ofrooms | RoomsSold | TotalRoomsAvailable | calculatelike |
+---------------------------------------------------------------------------------+
|    1/1/16     |      15       |     1     |         14          |    (15-1)     |
|    1/2/16     |      15       |     2     |         12          |    (14-2)     |
|    1/3/16     |      15       |     1     |         ?           |    (12-1)     |
|    1/4/16     |      15       |     0     |         ?           |    (11-0)     |
|    1/5/16     |      15       |     0     |         ?           |    (11-0)     |
|    1/6/16     |      15       |     1     |         ?           |    (11-1)     |
+---------------------------------------------------------------------------------+

累积总和是显而易见的解决方案:

select t.*,
       (TotalNumOfRooms - 
        sum(RoomsSold) over (order by TransactionDt range between unbounded preceding and current row)
       ) as TotalRoomsAvailable
from t;

如果这不符合你的需要,那么你应该问另一个问题。您在这里提出的问题显然有一个简单的解决方案(使用累积和)。如果这对你没有帮助,那么这不是一个正确的问题。

我知道(售出的房间)的累计金额可以解决问题,但我不想使用它,因为我的问题很复杂,我已经给出了一个简单的例子。然后,告诉我们你的实际问题。嗨@Noel-如果上述解决方案得到了解决,那么我可以很容易地解决。很难复制和解释。thxBut,您是说您不想出于某些未指明的原因使用累计总和。