SQL:如果有多个唯一键,则对应的值应为空
我有一张这样的桌子:SQL:如果有多个唯一键,则对应的值应为空,sql,Sql,我有一张这样的桌子: email_1 | name_1 | email_2 | name_2 +----------------+----------+---------------------+---------- sandy@name.com | Sandy | sandy@name.com | Sandy sandy@name.com | Sandy | sandy@name.com | Pat c
email_1 | name_1 | email_2 | name_2
+----------------+----------+---------------------+----------
sandy@name.com | Sandy | sandy@name.com | Sandy
sandy@name.com | Sandy | sandy@name.com | Pat
chris@name.com | Chris | |
george@name.com | George | george@name.com | Shelly
george@name.com | George | george@name.com | George
hank@name.com | Hank | hank@name.com | Barbara
hank@name.com | Hank | hank@name.com | Hank
mikey@name.com | Mikey | |
同一个电子邮件地址有多个名称。对于具有多个名称的电子邮件地址,我想创建一个表,列出不同的电子邮件和名称的Null
。仅附加一个名称的电子邮件将保留该名称
结果表:
email | name
+----------------+----------+
sandy@name.com | |
chris@name.com | Chris |
george@name.com | |
hank@name.com | |
mikey@name.com | Mikey |
我将如何编写查询来执行此操作?您要取消PIVOT并聚合:
select email,
(case when min(name) = max(name) then min(name) end) as name
from ((select email_1 as email, name_1 as name from t
) union all
(select email_2 as email, name_2 as name from t
)
) e
group by email;
要取消打印并聚合:
select email,
(case when min(name) = max(name) then min(name) end) as name
from ((select email_1 as email, name_1 as name from t
) union all
(select email_2 as email, name_2 as name from t
)
) e
group by email;
用你正在使用的数据库标记你的问题。用你正在使用的数据库标记你的问题。