Sql 按结果分组到列表中
我正在尝试列出经理根据此架构管理的所有租赁物业:Sql 按结果分组到列表中,sql,oracle11g,Sql,Oracle11g,我正在尝试列出经理根据此架构管理的所有租赁物业: 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 va
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;
我遇到的问题是上面的过程groupby
将具有相同managerId的所有元组分组在一起。现在,我如何打印出结果,如下所示:
Manager m1: Rental_Prop1, Rental_Prop2, Rental_Prop3
Manager m2: Rental_Prop9, Rental_Prop6, Rental_Prop4
您可以使用list\u agg()
:
唯一的问题是,中的将值放入变量中。如果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;
您好,请您解释一下“唯一的问题是into将值放入变量中……如果group by有多个管理器,这将生成错误。”这是因为group by
在每个组中只有一个managerId。@DF768。这就是进入
所做的。从第二个查询开始。
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;