Traditionelt har Oracle databasen aldrig selv kunnet lave en generisk pivot. Det virker næsten som om man har tænkt: "Hvordan kan et værktøj ovenpå Oracle også vise output hvis det ikke ved hvor mange kolonner der returneres?" Argumentet holder bare ikke fordi man har flere muligheder for at aflevere et resultset så aftageren samtidigt kan se/læse antal kolonner, datatyper etc.
Jeg skriver to ting: 1) Som jeg tidligere kunne have skrevet SQL'en, og 2) nogle af de nyere måder (PIVOT).
1)
Nå, men typisk har jeg klaret det, enten med fast eller dynamisk SQL, ved for hver af rækkerne i din Table1 at SELECT'e én CASE-sætning for hver af rækkerne i din Table1. Merarbejdet i form af CASE-sætninger betaler sig kun hvis Table2 er stor, for SQL'en som joiner én gang. Ex (pseudo SQL):
SELECT sub.id, sub.navn, max( sub.telefon) telefon, max( sub.fax) fax
FROM (
SELECT
p.id,
p.navn,
CASE WHEN a.type = 'Telefon' THEN a.text END telefon,
CASE WHEN a.type = 'Fax' THEN a.text END fax
FROM personer p, attributter a
WHERE p.id = a.link_id
) sub
GROUP BY sub.id, sub.navn
ORDER BY ...
2)
Der er heldigvis sket noget i Oracle-verdenen de seneste år.
Hvis jeg var dig ville jeg kigge på dette link som opsummerer flere muligheder. Lad dig ikke forvirre af at hanflere steder skriver om den i forhold til dig omvendte problemstilling. Hvis det skal gå lidt hurtigt, gå videre til hans PIVOT-link:
http://www.dba-oracle.com/t_display_multiple_column_values_same_rows.htm