【发布时间】:2017-09-05 07:37:27
【问题描述】:
我的数据库中有带有电子邮件和电话字段的客户。他们中的一些人有电话和电子邮件,有的只有电子邮件,有的只有电话。不同客户之间的电话和电子邮件不能是唯一的。
我需要创建虚拟表,其中数据库将计算具有相同电子邮件或电话的客户作为同一个客户。例如,我有一张桌子:
Phone Email ID
916 x@.com 1
x@.com 2
916 3
915 4
查询应创建第 4 列,它将为 ID 为 1、2 和 3 的客户端显示唯一的相同值。
结果应该是这样的
Phone Email ID NewID
916 x@.com 1 1
x@.com 2 1
916 3 1
915 4 2
917 x@.com 5 1
917 y@.en 6 1
【问题讨论】:
-
将预期结果指定为表格,此处也是格式化文本。
-
请标记您的DBMS,每个可能有不同的解决方案
-
是否总会有一条同时包含电话和电子邮件的记录?并且是否有一个额外的列对于可以在 group by 中使用的记录具有相同的值?就像 f.e.客户名称?
-
任何 DBMS 都适合,我只需要知道如何做到这一点(MySQL、Postgres、SQL Server 等)。在大多数情况下,不会有电话和电子邮件的记录。并且没有具有相同值的额外列 :( 如果电话有两条记录,我需要它们的唯一 ID,如果有两条只有电子邮件的记录,我需要它们的唯一 ID。
-
请为每个可能的数据集定义规则。如果添加 (917 , x@.com, 5) 会怎样? (null, x@.com, 2) Newid 会得到哪个?