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,您是说您不想出于某些未指明的原因使用累计总和。