2017-12-17 2 views
0

私は、たとえば、カンマで連結された値の文字列として数値を格納にVerticaの列を持っている:12,15,17、例えば:Vertica:文字列を分割してグループ化し、一意の値の集合を得る?

ID | values 
---------------------- 
A | 1,3,5 
A | 2,3,5,6 
B | 1,2,3 

は、私は私の最終的な結果としてこれを取得したいのですが

ID | values 
---------------------- 
A | 1,2,3,5,6 
B | 1,2,3 

の意味で、各IDはすべての異なる値のetとなります。これはどうすればいいですか?

答えて

0

(のVertica 8.1.1を使用して) はそれを見つけた: あなたは、エントリごとの値の最大数が何であるかを知っていると仮定すると、(のは、この例では6を想定してみましょう):

with m as (
    select 1 as i union all 
    select 2 as i union all 
    select 3 as i union all 
    select 4 as i union all 
    select 5 as i union all 
    select 6 as i), 
splitted_data as (
    select distinct ID, split_part('values',',',i) as value 
    from main_table cross join m) 
select ID, rtrim(agg_concatenate(value||','),',') as values 
from splitted_data 
関連する問題