我有一个逻辑问题,我已经坚持了一段时间。
假设有一个可以在两个不同位置服务的客户,对于位置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将不会显示。
有什么想法吗?