一个sql语句SELECT * FROM (SELECT i.RECEIVE_NUMBER,i.ITEM_CODE,p.IDCARD_NO,p.NAME,i.BUSINESS_OBJECT_TYPE,f.DOCUMENT_NAME,f.FILE_PATH,f.FILE_NAME 
FROM 
ACCEPT_BUSINESS_INDEX i LEFT JOIN ACCEPT_PERSON p ON i.BUSINESS_OBJECT_CODE = p.SEQ_ID LEFT JOIN ACCEPT_BUSINESS_FILE f ON i.BSNUM = f.BSNUM 
WHERE
 i.BUSINESS_OBJECT_CODE = p.SEQ_ID AND i.BSNUM = f.BSNUM AND (i.STATE='99' OR i.STATE='100') AND f.TYPE='1'  AND i.RECEIVE_NUMBER NOT IN (SELECT i.RECEIVE_NUMBER FROM ACCEPT_MATERIAL_DOSSIER m WHERE i.RECEIVE_NUMBER = m.BUSINESS_OBJECT_CODE )) WHERE ROWNUM <= 200
结果为
现在想把重复的 i.RECEIVE_NUMBER 去掉 应该怎么改

解决方案 »

  1.   

    这应该叫聚合select RECEIVE_NUMBER, ITEM_CODE, IDCARD_NO, 
    listagg(NAME) within group(order by 1),
    listagg(BUSINESS_OBJECT_TYPE) within group(order by 1) from tab group by RECEIVE_NUMBER, ITEM_CODE, IDCARD_NO
      

  2.   

    忘了说了,RECEIVE_NUMBER这个字段重复是因为一个RECEIVE_NUMBER对应了多个文件,所以才会重复,实际上表里 RECEIVE_NUMBER字段是不重复的