Tabellenstruktur in SELECT simulieren

Net_Hans

Neuer Benutzer
Beiträge
2
Hallo,

ich bin auf der Suche nach einer Möglichkeit, folgendes SQL-Statement kürzer und richtiger zu schreiben.

SELECT user.Name, zeit.h FROM user,
(SELECT '00' as H from dual
union all SELECT '01' as H from dual
union all SELECT '02' as H from dual
union all SELECT '03' as H from dual
union all SELECT '04' as H from dual
union all SELECT '05' as H from dual
union all SELECT '06' as H from dual
union all SELECT '07' as H from dual
union all SELECT '08' as H from dual
union all SELECT '09' as H from dual
union all SELECT '10' as H from dual
union all SELECT '11' as H from dual
union all SELECT '12' as H from dual
union all SELECT '13' as H from dual
union all SELECT '14' as H from dual
union all SELECT '15' as H from dual
union all SELECT '16' as H from dual
union all SELECT '17' as H from dual
union all SELECT '18' as H from dual
union all SELECT '19' as H from dual
union all SELECT '20' as H from dual
union all SELECT '21' as H from dual
union all SELECT '22' as H from dual
union all SELECT '23' as H from dual) zeit

Ziel soll es sein, das zu jedem Username die 24 Stunden des Tages erscheinen um dagegen weitere Informationen zu schlüsseln, welche nicht zwingend für jede Stunde vorliegen.

UserA | 00 | Info
UserA | 01 | null
UserA | 02 | null
UserA | 03 | Info
UserA | 04 | Info
UserA | 05 | Info
UserA | 06 | null
UserA | 07 | Info
UserA | 08 | Info
UserA | 09 | Info
UserA | 10 | Info
UserA | 11| null
UserA | 12| null
UserA | 13| null
UserA | 14| null
UserA | 15| Info
UserA | 16| Info
UserA | 17| Info
UserA | 18| Info
UserA | 19| null
UserA | 20| null
UserA | 21| null
UserA | 22| null
UserA | 23| null
UserB | 00| Info
UserB | 01 | null
...
UserX | 23| Info

Ich hoffe ihr könnt mir da weiter helfen.
Danke, Hans
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Danke für die schnelle Antwort und für die Lösung meines Problems.
Manchmal liegt die Lösung auf der Hand, aber man sieht sie dennoch nicht.

Im Oracle würde die Anweisung wie folgt aussehen:
Code:
SELECT user.Name,
zeit.h
FROM user,
( SELECT lpad(cast((Rownum-1) AS VARCHAR(2)),2,'0') AS h
FROM dual
CONNECT BY Rownum <= 24 ) zeit
 
Werbung:
Danke für die schnelle Antwort und für die Lösung meines Problems.
Manchmal liegt die Lösung auf der Hand, aber man sieht sie dennoch nicht.

In PostgreSQL, was ja ähnlich zu Oraggle ist, würde ich zu generate_Series() greifen:

Code:
test=# select * from generate_Series(0,23) h;
 h
----
  0
  1
...
 22
 23
(24 rows)
 
Zurück
Oben