Union all -> Felder untereinander anzeigen

ny_unity

Datenbank-Guru
Beiträge
133
Hallo Leute,

ich habe einen View, der ist wie folgt aufgebaut:
Select MANR, Nachname, Vorname, .... from Tables
also Ergebnis:
MANR - Nachname - Vorname
1 - Mustermann - Max

Nun möchte ich aber das es wie folgt aussieht:
MANR: 1
Nachname: Mustermann
Vorname: Max

Könnt ihr mir helfen? Ich find nicht wirklich den Ansatz, Union all kommt immer das der Name varchar nicht in int umgewandelt werden kann...

Vielen Dank

Erik
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.028
Hallo Leute,

ich habe einen View, der ist wie folgt aufgebaut:
Select MANR, Nachname, Vorname, .... from Tables
also Ergebnis:
MANR - Nachname - Vorname
1 - Mustermann - Max

Nun möchte ich aber das es wie folgt aussieht:
MANR: 1
Nachname: Mustermann
Vorname: Max

Könnt ihr mir helfen? Ich find nicht wirklich den Ansatz, Union all kommt immer das der Name varchar nicht in int umgewandelt werden kann...

Vielen Dank

Erik


PHP:
test=*> select * from ny;
id | name  |  vorname
----+-------+------------
  1 | max  | mustermann
  2 | susi  | sorglos
  3 | willi | lustig
(3 rows)

test=*> select key, val from (select id, 1 as col, 'Nummer' as key, id::text as val from ny union all select id, 2 as col, 'Name' as key, name  as val from ny union all select id, 3, 'Vorname', vorname from ny) foo order by id, col;
  key  |    val
---------+------------
Nummer  | 1
Name    | max
Vorname | mustermann
Nummer  | 2
Name    | susi
Vorname | sorglos
Nummer  | 3
Name    | willi
Vorname | lustig
(9 rows)
 

ny_unity

Datenbank-Guru
Beiträge
133
danke für dein code... das klappt soweit alles, bis aufs sortieren ;/
ich arbeite ja mit create view, dort ist das sortieren nicht erlaubt :( nur mit Hilfe von TOP...
 

akretschmer

Datenbank-Guru
Beiträge
9.028
danke für dein code... das klappt soweit alles, bis aufs sortieren ;/
ich arbeite ja mit create view, dort ist das sortieren nicht erlaubt :( nur mit Hilfe von TOP...

Für die Limitierungen in anderen Systemen kann ich aber nix...

Code:
test=*> create view mein_super_duper_view as select key, val from (select id, 1 as col, 'Nummer' as key, id::text as val from ny union all select id, 2 as col, 'Name' as key, name  as val from ny union all select id, 3, 'Vorname', vorname from ny) foo order by id, col;
CREATE VIEW
test=*> select * from mein_super_duper_view ;
  key  |  val
---------+------------
 Nummer  | 1
 Name  | max
 Vorname | mustermann
 Nummer  | 2
 Name  | susi
 Vorname | sorglos
 Nummer  | 3
 Name  | willi
 Vorname | lustig
(9 rows)

In PG gehts es auch als VIEW, in 9.3 auch als mat. View:

Code:
test=*> create materialized view mein_super_duper_materialized_view as select key, val from (select id, 1 as col, 'Nummer' as key, id::text as val from ny union all select id, 2 as col, 'Name' as key, name  as val from ny union all select id, 3, 'Vorname', vorname from ny) foo order by id, col;
SELECT 9
 

ukulele

Datenbank-Guru
Beiträge
4.394
In MSSQL sind Sortierungen in Views nicht erlaubt weil für MS "sinnfrei". Eine Tabelle wird ja auch nicht sortiert erstellt. Die Sortierung erfolgt immer erst bei Ausgabe also in diesem Fall beim Select auf die View.

Ich denke es ist keine technische sondern eine "logische" Einschränkung durch MS. Genauso wie man im GROUP BY alle nicht aggregierten Spalten anzugeben hat, ausser in MySQL :)
 
Werbung:
Oben