【问题标题】:Writing a loop on Teradata在 Teradata 上编写循环
【发布时间】:2020-06-13 14:57:20
【问题描述】:

我没有在 Teradata 中编写过很多存储过程,而且我正在努力获得我需要的结果。我敢肯定,虽然它一定是一个相对容易的:)

我需要计算三列的总和 - 库存、销售和交货。 sales 实际上是一个负值。求和的结果需要给我stock 用于下一行。如果三列之和

提前感谢帮助

这是我在链接stock calculation中尝试做的一个示例

stock_for_next_weekstocksalesdeliveries 三列之和计算得出。然后该号码需要用作下一周的 stock 号码,我只有 第 1 周stock 号码。如果它低于零,它需要为零(因此为什么累积和不起作用)。 计算按产品划分。

【问题讨论】:

  • 展示你的尝试会很好
  • 你可能不需要循环,只显示一些示例数据和预期结果
  • @dnoeth 我在正文中添加了更多上下文,谢谢

标签: loops stored-procedures teradata


【解决方案1】:

首先根据初始库存salesdeliveries 计算运行总计。然后计算这个结果的运行MIN,如果是负数,调整运行总计:

SELECT ...
   running_total - 
   Min(Least(running_total, 0)) 
   Over (PARTITION BY Product
         ORDER BY Week
         ROWS Unbounded Preceding) as stock_for_next_week
FROM
 ( SELECT ...
      First_Value(stock) -- initial stock
      Over (PARTITION BY Product
            ORDER BY Week) +
      Sum(sales+deliveries) -- weekly numbers
      Over (PARTITION BY Product
            ORDER BY Week
            ROWS Unbounded Preceding) AS running_total
   FROM tab
 ) AS dt

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2014-11-28
    • 2016-02-20
    • 2019-03-28
    • 1970-01-01
    相关资源
    最近更新 更多