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