2012-02-10 5 views
0

私はこのようなテーブルを持っている:DB2でグループ化して各グループの最初の項目を取得する方法は?

|sub_account|name|email| 
|-----------|----|-----| 
// same account and same name: email different 
|a1   |n1 |e1 | 
|a1   |n1 |e2 | 
// same account, name and email 
|a2   |n2 |e3 | 
|a2   |n2 |e3 | 

私はこのようなテーブルを取得するクエリを希望:

|sub_account|name|email| 
|-----------|----|-----| 
// nothing to do here 
|a1   |n1 |e1 | 
|a1   |n1 |e2 | 
// remove the one that is exactly the same, but leave at least one 
|a2   |n2 |e3 | 

私が試した:

select sub_account, name, first(email) 
from table 
group by sub_account, name 

しかし、あなたのように「最初」がDB2に存在しないことを知っている。それに代わるものは何ですか?

おかげ

答えて

2
select sub_account, name, email 
from table 
group by sub_account, name, email 
+0

おかげで(私はわずか6分後、まだ受け入れることができない)がかかります –

1

私はDB2で確認していません。 SQLサーバーでは、問題に対してDISTINCTを使用できます。試してみてください。

SELECT DISTINCT sub_acount, name, email 
from TABLE 
0

私は方法を見つけた:

SELECT sub_account, 
     name, 
     CASE WHEN split_index=0 THEN MyList ELSE SUBSTR(MyList,1,LOCATE('|',MyList)-1) END 
FROM (select sub_account, name, LISTAGG(email,'|') as MyList, LOCATE('|',LISTAGG(LB_ARTICLE_CAISSE,'|')) AS split_index 
     from TABLE 
     group by sub_account, name) AS TABLEA 

この機能は、メールを集約し、分割後にそれをし、最初の1つの

関連する問題