Du kan bruge Oracles-samlinger. CAST()
parret med COLLECT()
kan samle værdier til en brugerdefineret samling og derefter SET()
vil slippe af med dubletterne. Så kan du bruge LISTAGG()
for at konvertere samlingen til en streng.
Oracle-opsætning :
CREATE TYPE intlist IS TABLE OF INT;/CREATE TYPE stringlist IS TABLE OF VARCHAR2(4000);/CREATE TABLE tabelnavn ( ColA NUMBER(5,0), ColB VARCHAR2(20) );INSERT INTO table_name SELECT 1, 'POW' FRA DUAL UNION ALLE VÆLG 2, 'POW' FRA DUAL UNION ALLE VÆLG 1, 'POWPRO' FRA DUAL UNION ALLE VÆLG 1, 'PRO' FRA DUAL UNION ALLE VÆLG 2, 'PRO' FRA DUAL UNION ALLE VÆLG 1, 'PROUTL' FRA DUAL UNION ALLE VÆLG 1, 'TNEUTL' FRA DUAL UNION ALLE VÆLG 1, 'UTL' FRA DUAL UNION ALLE VÆLG 1, 'UTLTNE' FRA DUAL;
Forespørgsel :
VÆLG ( VÆLG LISTAGG( COLUMN_VALUE, ',' ) INDEN FOR GRUPPE ( ORDER BY COLUMN_VALUE ) FROM TABLE( ColA ) ) AS ColA, ( SELECT LISTAGG( COLUMN_VALUE, ',' ) INDEN FOR GRUPPE (ORDER BY COLUMN_VALUE) FRA TABLE( ColB ) ) AS ColB FROM ( SELECT SET( CAST( COLLECT( ColA ORDER BY ColA ) AS INTLIST ) ) ColA, SET( CAST( COLLECT( ColB ORDER BY ColB ) AS STRINGLIST ) ) ColB FROM table_name);
Output :
ColA ColB---- -------------------------------------------- -1,2 POW,POWPRO,PRO,PROUTL,TNEUTL,UTL,UTLTNE