Oracle SQL查询:如何组合这些结果?

Oracle SQL查询:如何组合这些结果?,sql,oracle,Sql,Oracle,我想将这些据称重复(实际上不是)的条目合并到属性id组(PTY_id)下的唯一条目中,结果如下: 下面是我的查询代码: SELECT distinct P.PTY_ID, (P.PTY_UNITNUM||' '||P.PTY_STREET||', ' ||P.PTY_SUBURB||', '||P.PTY_CITY||' '||P.PTY_POSTCODE) address, T.P_type_name, F.FEAT_name FROM property P,

我想将这些据称重复(实际上不是)的条目合并到属性id组(PTY_id)下的唯一条目中,结果如下:

下面是我的查询代码:

SELECT distinct P.PTY_ID, (P.PTY_UNITNUM||' '||P.PTY_STREET||', '
       ||P.PTY_SUBURB||', '||P.PTY_CITY||' '||P.PTY_POSTCODE) address,
       T.P_type_name, F.FEAT_name
FROM  property P, PROPERTY_TYPE T, feature F, property_FEATURE K
WHERE  P.P_TYPE_ID = T.P_TYPE_ID
AND   K.feat_id = F.feat_id
AND   K.pty_id = P.pty_id
ORDER BY  p.pty_id;
更准确地说,我想显示一个独特的属性条目,其中显示了许多功能。我该怎么做

顺便说一下,我正在使用oracle 11g。所以我尝试了LISTAGG,但效果不太好

[更新] 我只是试着这样使用LISTAGG:

select distinct P.PTY_ID, (P.PTY_UNITNUM||' '||P.PTY_STREET||', '
      ||P.PTY_SUBURB||', '||P.PTY_CITY||' '||P.PTY_POSTCODE) address,
      T.P_type_name, LISTAGG(F.FEAT_name, ',') WITHIN GROUP (ORDER BY 
      P.PTY_ID) AS FEATURES
from property P, PROPERTY_TYPE T, feature F, property_FEATURE K
where P.P_TYPE_ID = T.P_TYPE_ID
and K.feat_id = F.feat_id
and K.pty_id = P.pty_id
group by P.PTY_ID, P.PTY_UNITNUM, P.PTY_STREET, P.PTY_SUBURB, P.PTY_CITY, 
P.PTY_POSTCODE, T.P_type_name
order by p.pty_id;

我得到这个错误,说:“从关键字未找到预期的地方”。错误发生在组(按P.PTY\u ID排序)中的行“
T.P\u type\u name,listag(F.FEAT\u name,,”)AS FEATURES

尝试删除“FEATURES”之前的“AS”

LISTAGG(F.FEAT_name, ',') WITHIN GROUP (ORDER BY P.PTY_ID) AS FEATURES

LISTAGG(F.FEAT_name, ',') WITHIN GROUP (ORDER BY P.PTY_ID) FEATURES


“工作不太顺利”是什么意思?我想您应该使用
listag
。我不知道您遇到了什么问题,也不知道您尝试了什么,所以我不知道
listag
是否是错误的方法,或者您是否做了错误的事情,或者您的问题是否需要进一步澄清。请检查此listag实现并发布您使用listag@JustinCave oops尝试过的内容。很抱歉,忘了提及这一点。。我在结果板上收到了“FROM关键字未找到预期位置”警告OK。因此,您尝试了一些未知的代码,但出现了语法错误。将您实际尝试过的代码与完整的错误堆栈一起发布会很有帮助。指定所需的实际结果也会很有帮助。@JustinCave刚刚编辑过。请看一看,你基本上只是复制和粘贴整个代码:有或没有,它的工作原理相同,如果你分享所有涉及表的ddl请。
SELECT DISTINCT P.PTY_ID,
  (P.PTY_UNITNUM
  ||' '
  ||P.PTY_STREET
  ||', '
  ||P.PTY_SUBURB
  ||', '
  ||P.PTY_CITY
  ||' '
  ||P.PTY_POSTCODE) address,
  T.P_type_name,
  LISTAGG(F.FEAT_name, ',') WITHIN GROUP (ORDER BY P.PTY_ID) FEATURES
FROM property P,
  PROPERTY_TYPE T,
  feature F,
  property_FEATURE K
WHERE P.P_TYPE_ID = T.P_TYPE_ID
AND K.feat_id     = F.feat_id
AND K.pty_id      = P.pty_id
GROUP BY P.PTY_ID,
  P.PTY_UNITNUM,
  P.PTY_STREET,
  P.PTY_SUBURB,
  P.PTY_CITY,
  P.PTY_POSTCODE,
  T.P_type_name
ORDER BY p.pty_id;