当前位置: 首页 > 面试题库 >

保留值,直到Teradata中的值发生变化为止

巫马正卿
2023-03-14
问题内容

teradata中有一个交易历史记录表,仅当存在以下交易数据时,余额才会更改:

Cust_id Balance Txn_dt
123     1000    27MAY2018
123     350     31MAY2018

例如,对于5月27日的一个客户(123),我们的余额为1000,而在5月31日,该客户进行了一笔交易,因此余额变为350。在5月28日至5月30日之间没有余额与5月27日。我希望这些天数据也存在(保留相同的余额并增加日期),其余几天必须保留相同的记录,直到交易完成的余额发生变化为止。如何在Teradata中做到这一点?预期产量:

Cust_id Balance Txn_dt
123     1000    27MAY2018
123     1000    28MAY2018
123     1000    29MAY2018
123     1000    30MAY2018
123     350     31MAY2018

谢谢桑迪

嗨,Dnoeth。似乎有效,但是您能不能让我知道如何扩展到某天,例如:直到2018年6月30日?


问题答案:

有几种方法可以得到此结果,Teradata中最简单的方法是使用时间序列的时间段扩展:

WITH cte AS
 (
   SELECT Cust_id, Balance, Txn_dt,
      -- return the next row's date
      Coalesce(Min(Txn_dt)
               Over (PARTITION BY Cust_id 
                     ORDER BY Txn_dt
                     ROWS BETWEEN 1 Following AND 1 Following)
              ,Txn_dt+1) AS next_Txn_dt
   FROM tab
 ) 
SELECT Cust_id, Balance
  ,Last(pd) -- last day of the period
FROM cte
-- make a period of the current and next row's date
-- and return one row per day
EXPAND ON PERIOD(Txn_dt, next_Txn_dt) AS pd

如果您运行TD16.10 +,则可以将替换MIN OVER为简化的LEAD

Lead(Txn_dt)
Over (PARTITION BY Cust_id 
      ORDER BY Txn_dt)


 类似资料:
  • 问题内容: 有没有一种方法可以在变量中传递值列表,并在IN()语句中使用它来对照传入的值列表检查字段? 我唯一能想到的就是这样: 谢谢。 问题答案: TD14支持名为STRTOK_SPLIT_TO_TABLE的漂亮表函数:

  • 我正在尝试构建一个带有按钮的PHP计算器。我的问题之一是我不能有超过一个数字的值。例如,当我尝试输入一个值(例如33)时,文本框中的结果变为3,因为当我对所有数字使用submit时,页面被刷新。只能使用一个PHP页面。这个解决方案是向我建议的,但它不能解决我的问题,因为它使用了多个页面。此外,一个以上的数字似乎不起作用。 另外,这里是我的HTML的一个示例 这是我的用户界面的图片,一个我的用户界面

  • 我正在制作我的程序,为JavaSE的学校作业扔一个骰子(如骰子)。用户可以将一个字符作为标准输入,因此用户选择的字符将代表骰子的眼睛。有时当我打印结果时,它会显示一个完全不同的字符。 输出此程序将生成正确的结果。但偶尔输入的字符(代表模具的眼睛)会转换为数字。 在以下情况下,程序应打印9个“@”字符。相反,它在第一行打印192。(我知道骰子有6只眼睛,但我在无意中打印了9只眼睛时遇到了这个奇怪的输

  • 因此,我目前正在尝试找出,如果提供的数据模型不包含标记,是否可以保留该值。我知道,但这不适用于FreeMarker标记。 基本上,我想做的是:

  • 我有一个选择框。有4个值(使用jstl标记生成),并且有加载按钮。 我正在单击load按钮调用struts操作 在struts操作类中,我添加了 现在我想在jsp页面中保留以前选择的值 我想与进行比较,而不是与Cloud进行比较。如何使用jstl(例如: 提前致谢

  • 问题内容: 我正在Go中处理一个json POST,其中包含一个包含64位整数的对象数组。当使用json.Unmarshal时,这些值似乎被转换为float64,并不是很有用。 有什么办法可以在json.Unmarshal的输出中保留原始的int64? 转到上面代码的游乐场 问题答案: 解决方案1 您可以使用Decoder和UseNumber解码您的号码而不会丢失: 该类型的定义如下: 这意味着您