我试图在我的数据库中标记新客户和吸引的客户。我们的目标是要有一个非常简单的平桌,我可以在那里拉“新客户”和“失去的客户”为给定的业务和给定的一年。
我有一张这样的table:
BUSINESS, CUSTOMER, YEAR
Business X, Customer A, 2001
Business X, Customer A, 2002
Business X, Customer A, 2003
Business X, Customer B, 2004
Business X, Customer B, 2005
Business Y, Customer A, 2004
我想在我的表中添加两个新的列,这样我就可以标记某个客户在当年是“新的”,或者在该业务线的下一年是“消失的”。所以最终结果应该是这样的:
BUSINESS, CUSTOMER, YEAR, NEW, GONE
Business X, Customer A, 2001, NEW, NULL
Business X, Customer A, 2002, NULL, NULL
Business X, Customer A, 2003, NULL, GONE
Business X, Customer B, 2004, NEW, NULL
Business X, Customer B, 2005, NULL, GONE
Business Y, Customer A, 2004, NEW, NULL
非常感谢你的帮助。我在sql中也在google cloud dataprep中进行这方面的工作,我是一个糟糕的程序员,对暴力技术非常开放!!
1条答案
按热度按时间zsohkypk1#
一种解决方案是使用相关子查询,其中
Exists()
条件。在第一个子查询中,我们确定
YEAR
存在于特定的BUSINESS
,CUSTOMER
以及YEAR
组合。如果它exists()
,我们设置NEW
至NULL
(因为今年之前已经有另一行了)。在第二个子查询中,我们确定
YEAR
存在于特定的BUSINESS
,CUSTOMER
以及YEAR
组合。如果它exists()
,我们设置GONE
至NULL
(因为今年之后已经有另一行了)。