Mike, Just wanted to supplement your example with another one from my environment (uses nested tables with CAST and MULTISET to achieve the same):
SELECT c.customer_id ,customer_name ,utils.code_table_to_string(CAST( MULTISET( SELECT distinct dlr_dealer_code FROM dealer_customers dc ,dlr_dealer_master_t WHERE dc.customer_id = dc_in.customer_id AND dlr_dealer_id = dc.dealer_id ORDER BY dlr_dealer_code ) AS code_table_t )) spans_these_dealers FROM customers c ,( SELECT customer_id FROM dealer_customers GROUP BY customer_id HAVING COUNT(distinct dealer_id) > 1 ) dc_in WHERE dc_in.customer_id = c.customer_id; Does eseentially the same thing. In this case it concatenates the dealer_codes per customer (identifies customers spanning multiple dealers) on the same row. Here is a sample of the output: 2969473096 Mountain Enterprises Inc D100,D470,D480 2969473121 K C Construction B010,B150,B190 2969473195 GOODFELLOW BROS H140,H330 The TYPE code_table_t is defined as: TYPE CODE_TABLE_T IS table of varchar2(3000); And the conversion function is very similar in its functionality to dbms_utility.comma_to_table procedure: FUNCTION code_table_to_string (in_table code_table_t, in_rec_sep varchar2 DEFAULT config.c_rec_sep) RETURN delimited_list_t IS v_list delimited_list_t; BEGIN FOR i IN 1..in_table.COUNT LOOP IF i = 1 THEN v_list := in_table(1); ELSE v_list := v_list||in_rec_sep||in_table(i); END IF; END LOOP; RETURN v_list; END code_table_to_string; As opposed your suggestion of using the following: SELECT id, CONCAT_LIST(CURSOR( > SELECT text > FROM mike m_in ORDER BY ordr > WHERE m_in.id = m.id)) list > FROM ( select distinct id from mike) m; --- Mike Spalinger <[EMAIL PROTECTED]> wrote: > Imran, > > Tom Kyte has a thread that might help: > http://asktom.oracle.com/pls/ask/f?p=4950:8:1554835115460038644::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:229614022562, > > Essentially, you can do this: > > CREATE or replace FUNCTION CONCAT_LIST( cur SYS_REFCURSOR ) > RETURN VARCHAR2 IS > ret VARCHAR2(32000); > tmp VARCHAR2(4000); > BEGIN > loop > fetch cur into tmp; > exit when cur%NOTFOUND; > ret := ret || ' ' || tmp; > end loop; > RETURN ret; > END; > / > > SQL> select * from mike; > > ID TEXT ORDR > ---------- ---------- ---------- > 1 B 2 > 1 A 1 > 1 C 3 > > SELECT id, SUBSTR(CONCAT_LIST(CURSOR( > SELECT text > FROM (select id, text, ordr from mike order by ordr) ee > WHERE e.id = ee.id)),1,40) list > FROM ( select distinct id from mike) e; > > ID LIST > ---------- -------------------- > 1 A B C > > Mike > > > Imran Ashraf wrote: > > Hi, > > > > I have the following data , table Temp > > > > ID Text Order > > 1 B 2 > > 1 A 1 > > 1 C 3 > > > > > > I want to write a query which says: wherever there is more than 1 > occurrence > > of ID then concatenate the text in the order specified in the > order column. > > So i would get: > > > > ID Text > > 1 A B C > > > > Any suggestions? > > > > Thanks > > > > Imran > > > -- > Please see the official ORACLE-L FAQ: http://www.orafaq.net > -- > Author: Mike Spalinger > INET: [EMAIL PROTECTED] > > Fat City Network Services -- 858-538-5051 http://www.fatcity.com > San Diego, California -- Mailing list and web hosting > services > --------------------------------------------------------------------- > To REMOVE yourself from this mailing list, send an E-Mail message > to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in > the message BODY, include a line containing: UNSUB ORACLE-L > (or the name of mailing list you want to be removed from). You may > also send the HELP command for other information (like subscribing). ===== Sundeep Maini Consultant Currently on Assignement at Caterpillar Peoria [EMAIL PROTECTED] __________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com -- Please see the official ORACLE-L FAQ: http://www.orafaq.net -- Author: sundeep maini INET: [EMAIL PROTECTED] Fat City Network Services -- 858-538-5051 http://www.fatcity.com San Diego, California -- Mailing list and web hosting services --------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).