SQL 3 ID随时间变化

时间:2018-11-16 16:40:57

标签: sql teradata

我有一个逻辑问题,我已经坚持了一段时间。

假设有一个可以在两个不同位置服务的客户,对于位置A,他们收到A_ID,对于位置B,他们收到B_ID。有一个第3个ID,我将其称为C_ID,它将两个客户链接在一起,以便在两个平台上都可以看到它们。客户可以仅从地点A,仅地点B或地点A和B进行购买。

如果不为空,我想创建一个易失性表以全天候填充A_ID,B_ID,C_ID。

当前数据可以在同一张表中看起来像以下任何内容:

EXAMPLE A 
Date    ,     A_ID   ,     B_ID      ,     C_ID
---------------------------------------------
01/01/17   ,   145   ,               ,    
02/01/17   ,   145   ,               ,
03/01/17   ,   145   ,    201501     ,     601888
04/01/17   ,   145   ,    201502     ,     601888
05/01/17   ,   145   ,    201502     ,     601888

OR

EXAMPLE B
Date    ,     A_ID   ,     B_ID      ,     C_ID
---------------------------------------------
01/01/17   ,   198   ,               ,    
02/01/17   ,   198   ,               ,
03/01/17   ,   198   ,               ,     
04/01/17   ,   198   ,               ,     
05/01/17   ,   198   ,               ,     

OR

EXAMPLE C
Date    ,     A_ID   ,     B_ID      ,     C_ID
---------------------------------------------
01/01/17   ,         ,     567222          ,    
02/01/17   ,         ,     567222          ,
03/01/17   ,         ,     567222          ,     
04/01/17   ,         ,     567222          ,     
05/01/17   ,         ,     567222          ,   

我尝试了一个窗口函数:

SELECT 
calendar_date,
MAX(A_ID) OVER(PARTITION BY C_ID)      A_ID,
MAX(B_ID) OVER(PARTITION BY C_ID)      B_ID,
MAX(C_ID) OVER(PARTITION BY B_ID,A_ID) C_ID,
FROM TABLE A

但是,这会删除所有尚未使用两个平台的示例,即示例B和示例C将不会显示。

有什么想法吗?

0 个答案:

没有答案