2016-05-28 1 views
1

GROUP BYがリストに結果私はマネージャは、このスキーマから管理賃貸物件の全てを一覧表示しようとしています

ここ
Create Table Rental_Property(property_number int Primary Key, managerId 
int, Foreign Key(managerId) References manage(managerId)); 

私の手順:

Create Or Replace Procedure supervisor_properties 
As 
     list_of_properties varchar (300) := ' '; 
Begin 
     Select 'Manager' || ': ' || managerId || ' ' || property_number 
     Into list_of_properties 
     From Rental_Property 
     Group By managerId; 
End; 

私は問題を抱えていますパーツ上記の手順は、group byは、同じmanagerIdを持つすべてのタプルをグループ化します。あなたはlist_agg()を使用することができます

Manager m1: Rental_Prop1, Rental_Prop2, Rental_Prop3 
Manager m2: Rental_Prop9, Rental_Prop6, Rental_Prop4 

答えて

1

Select (managerId || ' ' || 
      list_agg(property_number, ' ') within group (order by property_number) 
      ) 
    Into list_of_properties 
    From Rental_Property 
    Group By managerId; 

唯一の問題は、intoは、変数に値を入れているということである今どのように私は結果にこのような何かをプリントアウトします。 。 。 group byに複数のマネージャーが存在すると、エラーが発生します。このクエリで

スタート:

Select managerId, 
     list_agg(property_number, ' ') within group (order by property_number) as properties 
From Rental_Property 
Group By managerId; 

編集:私は見

。あなたが値を印刷したい場合:。。あなたは何を意味することによって説明してくださいすることができ、

Create Or Replace Procedure supervisor_properties 
As 
Begin 
    for x in (Select managerId, 
        list_agg(property_number, ' ') within group (order by property_number) as properties 
       From Rental_Property 
       Group By managerId 
      ) 
    loop 
     dbms_output.put_line(x.managerId || ' ' || x.properties); 
    end loop; 
End; 
+0

こんにちは「を唯一の問題は、には、変数に値を入れているということであり、これは場合にエラーが発生します。グループには複数の管理者がいます。 'group by 'は各グループに一つのmanagerIdしか持たないからです。 – DF768

+0

@ DF768。 。 。それは 'に'がやっているものです。 2番目のクエリから始めます。 –

関連する問題