我有一张包含以下数据的表格:
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中执行此操作
答案 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