通过将2列与OR链接来生成ID

时间:2019-05-21 08:47:41

标签: sql dense-rank

我正在尝试使用2个不同的列来生成唯一ID。

条件是只要第1列或第2列至少包含一个相同的结果,我会将其分类为相同的唯一ID(我要生成的唯一ID)。

这将是我拥有的原始数据: https://imgur.com/qg1LwPC

给出示例用例: 我有3个帐户(第1列)和2个设备(第2列)。 如果我在设备A中登录帐户1,然后在设备A中登录帐户2

我的唯一配置文件应包含1,2,A作为唯一ID 1(自动生成/密集排名)。

如果我将帐户2登录到设备B,它现在应该使用(1,2,A,B)更新我的唯一ID 1

在我将帐户2登录到设备C的情况下,我的唯一ID 1应该由(1,2,A,B,C)组成

基本上,我想要创建的唯一ID是,只要第1列或第2列的值与我​​现有列表中的值相同,它将被标记为相同的唯一ID。

如果我仅索引第1列或仅索引第2列,而不是同时索引第2列,则Dense_rank将允许我创建唯一的ID。

使用DENSE_RANK() OVER(ORDER BY column1, column2)将为我提供第1列和第2列ID,我需要的是第1列或第2列。

我尝试使用Generate an ID based on Column Values,但这不能满足我的要求。

SELECT column1, column2, DENSE_RANK() OVER(ORDER BY column1, column2) AS result
FROM test_table 

给我带来了结果,但没有达到我的期望。 https://imgur.com/mj2vbbf

是否还有其他方法可以在SQL上完成而无需进入PL?

我没有使用常规的SQL服务器(AliCloud https://www.alibabacloud.com/help/product/27797.htm开发的MaxCompute),因此我的语法可用性可能非常有限。我需要的是更多构建它的逻辑。

最终目标是构建一个映射ID,该ID将显示数组中的所有第1列和第2列,并将该ID表示为一个人。

0 个答案:

没有答案