2016-11-19 12 views
-1

私はテーブルを持っている:私はすでに解決策を持っているが、それは参加するとROW_NUMBER()を使用して作成する必要があり city_n1n2n3joinとrow_numberを使用してdb2の行を含む列を変更するにはどうすればよいですか?

city_name

このようななめらかを取得する必要があります

選択都市coalesce(max(大文字の場合はid_name = 1、次にnameの末尾)、 'nobody')をname1、coalesce(max(大文字の場合はid_name = 2の場合は名前の末尾)、 'nobody' = 3次に名前終了)、 '誰も')name3 from city_name市区町村別cityグループ別

ありがとうございます。ここで

+0

あなたは本当に良い解決策を持っていますなぜあなたは何か他のものを探していますか? – MichaelTiefenbacher

+0

私の先生がジョインとrow_numberを使ってこの問題を解決するタスクをくれたから:) –

答えて

0

はROWNUMBERと解決策ですが、どのように多くのユーザー(したがって、列のあなたが持つことができます)事前に知っていないので、それが最善の解決策ではありません

with cityuserwithrow as (
select f1.*, rownumber() over(partition by f1.city order by f1.name) as rang 
from city_name f1 
) 
select distinct f0.city, 
ifnull(f1.name, 'NOBODY') as NAME1, 
ifnull(f2.name, 'NOBODY') as NAME2, 
ifnull(f3.name, 'NOBODY') as NAME3 
from city_name f0 
left outer join cityuserwithrow f1 on (f0.city, 1)=(f1.city, f1.rang) 
left outer join cityuserwithrow f2 on (f0.city, 2)=(f2.city, f2.rang) 
left outer join cityuserwithrow f3 on (f0.city, 3)=(f3.city, f3.rang) 
関連する問題