2017-03-01 9 views
3

内の文字列のために、私は、PostgreSQLで働いていると私はこのようなテーブルがあります。SQL - アルファベット順にソート列

Group | Name 
====================================== 
1  | Mary 
2  | Barry,Ann,Peter 
3  | Max,Chris 
4  | Richard,Mary,Peter,Oliver 

テーブルは一例であり、あなたは、10,000以上の異なる名前があるだろうと考えることができ、一つのグループ内の名前の最大数は、私は結果はこのようになるように、アルファベット順に各グループ内で名前をソートしたい4.

です:

Group | Name 
====================================== 
1  | Mary 
2  | Ann,Barry,Peter 
3  | Chris,Max 
4  | Mary,Peter,Oliver,Richard 

おかげ

+5

複数の値を1つの列に格納しないようにデータを標準化します。単純なORDER BYでこれを行うことができます。コンマ区切りのリストにデータを格納することを選択した場合は、使用するたびに余分に作業する必要があります。適切な方法は、 '2 Barry'、' 2 Ann'、 '2 Peter 'を3つの行に分け、' ORDER BY Group、Name'という問い合わせをすることです。 –

+1

'name'、' text'または 'text []'の型は何ですか? – kennytm

+0

@kennytm名前の種類はテキストです –

答えて

0
SELECT t.Group, string_agg(n.names, ',' ORDER BY n.names) AS Name 
FROM my_table t, 
    regexp_split_to_table(t.Name, ',', 'g') n(names) 
GROUP BY 1 
ORDER BY 1; 
関連する問題