如何解决VSQL:连接同一表中同一列中的两个值
我有一张如下所示的表格:
<form></form>
即我有记录,其中每个键(电子邮件)只有一个值(名称),但在其他情况下,我每个键有两个值。
我希望输出如下所示:
email | first_name
----------------------+------------
------@diffem.com | Matthew
------@email.net | Susan
------@email.net | Thomas
------@email.com | Donald
------@email.com | Paula
email | first_name
----------------------+-----------------
------@diffem.com | Matthew
------@email.net | Susan and Thomas
------@email.com | Donald and Paula
我还尝试通过电子邮件进行分区,将两个名称放入不同的列中,然后将其连接起来,但最终在我的输出表中出现了空白(见下文)
CREATE TABLE user.table1 AS
(
select distinct email,case when email_count = 1 then first_name
when email_count = 2 then (MIN(first_name))||' and '||MAX(first_name))
else null end as first_name_grouped
FROM (
SELECT email,first_name,count(email) over (partition by email) as email_count
FROM table
)
x
)
;
有没有办法在 sql 中做到这一点,而无需创建两个单独的名称列?提前致谢。
解决方法
你想要完成的事情可以在 MYSQL 中完成
SELECT email,GROUP_CONCAT(first_name)
FROM table
GROUP BY email
MS SQL server 中有一个类似的函数叫做 STRING_AGG() ,你可以在这里看到更多https://database.guide/mysql-group_concat-vs-t-sql-string_agg/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。