列中的值不同

时间:2016-06-12 12:58:42

标签: sql distinct amazon-redshift

我有一张包含以下数据的表格:

Row Names  
1   George, George, John, Chris  
2   Helen, John  
3   John, John, John,John  

我想创建一个包含以下输出的新列

Row Output  
1   George, John, Chris  
2   Helen, John  
3   John

如何在Redshift SQL中执行此操作

1 个答案:

答案 0 :(得分:2)

由于Amazon Redshift不支持存储过程或表函数,因此您应该创建一个UDF:

CREATE OR REPLACE FUNCTION f_list_dedup
(cs_list VARCHAR)
RETURNS varchar
IMMUTABLE AS $$
  return ','.join(set([x.strip() for x in cs_list.upper().split(',')]))
$$ LANGUAGE plpythonu;

然后在您的查询中调用它:

WITH cte AS 
(   
    SELECT 'George, George, John, Chris' AS Names UNION
    SELECT 'Helen, John' UNION
    SELECT 'John, John, John,John'
)
SELECT * 
, f_list_dedup(Names)
FROM cte