Det lyder som om du gerne vil have en pivot tabel - der er ikke rigtig nogen smarte metoder med mindre du kører Oracle Discover. Men en mulig løsning kan du finde her
Jeg forstod det at du ville have resultatet sådan at din tabel bliver roteret 90 grader (kolonner bliver til rækker og vice versa). Det er netop en af mulighederne ved en pivot-tabel.
Ja, det er rigtigt nok, at jeg vil have det på den måde, men jeg vil kunne se alle resultater, og ikke kun enkelte, som jeg kan selectere i en pivot tabel
Lav en tablefunktion hvor du (med PL/SQL) opbygger et nyt statement i en varchar-variabel. Det nye statement er den select som pivoterer din tabel. I din tablefunktion fyrer du så det statmement af med en execute.
Du kalder så din tablefunktion med en SELECT pivot(evt. parametre) FROM DUAL; - derved får du Oracle til at returnere et resultatset fra en procedure/funktion uden at skulle gennem alt det med at erklære en cursor.
Jeg er desværre blevet totalt rusten i at skrive PL/SQL (har ikke gjort det seriøst i 2-3 år) - så nedenstående er ren pseduo-kode (syntaksfejl etc etc), men måske kan det bringe dig på vej:
create or replace function Pivot returns table as begin declare v_sql varchar(8000) v_sql:='select ' /* så laver du de selects der laver din pivotering og concatter det til din v_sql streng - og derefter afslutter du strengen */
v_sql:=v_sql||' from dual;' /* Så fyres den af og du skal samle resultatsættet op og returnere fra funktionen */ return exec (v_sql) end /
Men ... forvent ikke den helt store performance af noget som ovenfor...
Jeg har gjort det, at jeg manuelt har lavet tabellen, og så opdaterer jeg tabellen en gang om måneden med en update via en hjælpetabel. Lukker spm.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.