每月追溯更新

时间:2017-08-25 03:50:03

标签: sql oracle powershell teradata

让我通过解释我的表来解释我想要的东西。

第1个月 -

表IMEI_SALES - 此表每月更新一次。 sale_date列是所有表的min(sale_date)。因此,不能有另一个具有相同sale_date的IMEI。

imei              sale_date   month   tfm  tfm1 tmf2 tfm3 
------            ---------   -----   ---- ---- ---- ----
354205080163741   01/08/2017  201708  null null null null
354205080163742   01/08/2017  201708  null null null null     
354205080163743   13/08/2017  201708  null null null null    

本月 -

交通表 - 我在这里得到了交通。再一次,没有一个具有相同日期的imei。这个表每月创建然后删除。

imei              traffic_date tr_month   
------            ---------   -----   
354205080163741   01/08/2017  201708  
354205080163742   01/08/2017  201708     
354205080163743   13/08/2017  201708   

所以在那个月末。我有我的IMEI_SALES TABLE和流量表。我需要做的是用流量更新tfm的colums。我可以手动完成。所以在8月底,表IMEI_SALES应该是这样的。

  imei              sale_date   month    tfm       tfm1 tmf2 tfm3 
  ------            ---------   -----   ----       ---- ---- ----
  354205080163741   01/08/2017  201708  01/08/2017 null null null
  354205080163742   01/08/2017  201708  01/08/2017 null null null     
  354205080163743   13/08/2017  201708  13/08/2017 null null null
  • tfm:是来自Traffic_date表的traffic_date。
  • tfm1:是下个月来自Traffic_date表的traffic_date (9月)。
  • tfm2:tfm1:是next 2中来自Traffic_date表的traffic_date 月(十月)
  • tfm3:tfm1:是来自Traffic_date表的traffic_date 3 (Nomvember)的几个月

限制是当前月份+3。让我们看看下个月会发生什么。

下个月 -

表IMEI_SALES。从九月开始新的行。

imei              sale_date   month   tfm        tfm1 tmf2 tfm3 
------            ---------   -----   ----       ---- ---- ----
354205080163741   01/08/2017  201708  01/08/2017 null null null
354205080163742   01/08/2017  201708  01/08/2017 null null null     
354205080163743   13/08/2017  201708  13/08/2017 null null null
354205080163741   01/09/2017  201709  null       null null null
354205080132131   01/09/2017  201709  null       null null null
354205080163425   13/09/2017  201709  null       null null null

流量表 - 删除上一个。

IMEI 354205080163741,354205080163742,354205080163743是与sale_date相同日期和3个月内匹配。

IMEI 354205080132131与不同日期匹配,且在sale_date之后的3个月内。

IMEI 354205080163425在流量表中不匹配。

imei              traffic_date tr_month   
------            ---------   -----   
354205080163741   01/09/2017  201709
354205080163742   01/09/2017  201709
354205080163743   01/09/2017  201709  
354205080132131   02/09/2017  201709     
354243774312421   14/09/2017  201709

更新IMEI_SALES表时,它应如下所示。

imei              sale_date   month   tfm        tfm1       tmf2 tfm3 
------            ---------   -----   ----       ----       ---- ----
354205080163741   01/08/2017  201708  01/08/2017 01/09/2017 null null
354205080163742   01/08/2017  201708  01/08/2017 01/09/2017 null null     
354205080163743   13/08/2017  201708  13/08/2017 01/09/2017 null null
354205080163741   01/09/2017  201709  01/09/2017 null       null null
354205080132131   01/09/2017  201709  02/09/2017 null       null null
354205080163425   13/09/2017  201709  null       null       null null

因此,例如,让我们说我在12月与9月到12月的销售和流量表相同。你必须匹配

  • 八月销售与(八月交通,九月交通,十月交通 和十一月交通)
  • 9月销售情况(9月交通量,10月交通量,11月 交通和十二月交通)

  • 10月销售额(10月交通量,11月交通量和12月份) 流量)

  • 11月销售额(11月交通量和12月交通量)

  • 12月销售与12月流量相比。

我需要使用Teradata sql和Powershell来实现自动化。 Oracle也受到欢迎。我刚刚提到的限制是否可能?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您目前如何修改表格?任何PL / SQL程序?可以添加触发器,这将在修改时进行额外更新,或者更新当前机制以更新tfm,tfm1字段