Sql 在联接表达式中使用列而不在group by语句中使用列
在上面的查询中,我在语句Sql 在联接表达式中使用列而不在group by语句中使用列,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,在上面的查询中,我在语句c.id=d.id select c.id, c.fname, c.lname, d.phoneList from customers c left outer join ( select listagg(telNo, ',') within group (order by telNo) as phoneList from customerPhones group by p.telNo
c.id=d.id
select c.id, c.fname, c.lname, d.phoneList
from customers c
left outer join
(
select listagg(telNo, ',') within group (order by telNo) as phoneList
from customerPhones
group by p.telNo
) d
on (c.id = d.id)
仅当我将其包含在select语句中,并且表示需要将其包含在group by语句中时,它才起作用。是否有任何方法可以使用d.id而不必将其包含在group by语句中?只需简化为这个
ORA-00904 "d.id" invalid identifier.
但是您只在d中选择电话号码,怎么可能有d.id?
id
列必须出现在外部连接的选择列表中query@ziggy对不起,现在我明白了,外接…:D
SQL> select * from customers;
ID FNAME LNAME
---------- -------------------- --------------------
1 John Smith
2 Joe Bloggs
SQL> select * from customerphones;
ID TELNO
---------- --------------------
1 0123456789
1 0207983498
2 0124339848
2 09348374834
2 02387694364
SQL> select c.id, c.fname, c.lname, listagg(telNo, ',') within group (order by telNo) as phoneList
2 from customers c left outer join customerphones p on p.id = c.id
3 group by c.id, c.fname, c.lname
4 /
ID FNAME LNAME PHONELIST
---------- -------------------- -------------------- ------------------------------
1 John Smith 0123456789,0207983498
2 Joe Bloggs 0124339848,02387694364,0934837
4834