如何在Snowflake的SQL中拼接不同行的两个字符串实现全名合并
Snowflake 行列转换拼接姓名方案
可以实现,你可以通过条件聚合搭配字符串拼接功能直接得到目标输出,也可以先行转列再做拼接,两种常用实现方式如下:
方案1:条件聚合直接拼接
不需要额外做行转列,分组后用条件判断取出对应姓、名的数值直接拼接即可,Snowflake中可以用||运算符或者CONCAT()函数实现拼接效果,和CONCATENATE功能一致:
SELECT ID, -- 写法1:用||运算符拼接 TRIM(MAX(CASE WHEN Question = 'First name?' THEN Answer END) || ' ' || MAX(CASE WHEN Question = 'Last name?' THEN Answer END)) AS Full_Name -- 写法2:用CONCAT函数拼接,效果和上面完全一致 -- TRIM(CONCAT(MAX(CASE WHEN Question = 'First name?' THEN Answer END), ' ', MAX(CASE WHEN Question = 'Last name?' THEN Answer END))) AS Full_Name FROM 替换为你的表名 GROUP BY ID ORDER BY ID;
加TRIM()是为了避免出现某一项为空时生成多余的前后空格。
方案2:先PIVOT行转列再拼接
如果后续还要用到姓名拆分的字段,可以先行转列再做拼接,逻辑更直观:
WITH pivot_result AS ( SELECT * FROM 替换为你的表名 PIVOT ( MAX(Answer) FOR Question IN ('First name?' AS first_name, 'Last name?' AS last_name) ) ) SELECT ID, TRIM(CONCAT(first_name, ' ', last_name)) AS Full_Name FROM pivot_result ORDER BY ID;
内容的提问来源于stack exchange,提问作者John Thomas
相关产品推荐
相关产品推荐

