![]() |
Datenbank: Oracle • Version: 10 • Zugriff über: PL/SQL
Alle Werte zwischen zwei ZAhlen mit SQL ausgeben
Hallo zusammen,
ich möchte aus einer Tabelle mit zwei Spalten alle Werte einzeln ausgegeben bekommen, die in diesem Interval der beiden Spalten liegen(incl der Intervalgrenzen). Z.B.: Spalte_A | Spalte_B 100 | 110 Ergebnis: 100 101 102 103 104 105 106 107 108 109 110 Geht so etwas mit einem SQL-Statement oder muss ich da auf PL/SQL zurückgreifen? Hat jemand eine Idee? |
Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben
Einen interessanten Ansatz habe ich hier gefunden:
![]() |
Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben
Hi,
Zitat:
Danke! |
Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben
Hallo,
nur ein Schnellschuß:
SQL-Code:
select MeinstDuDas from
( SELECT LEVEL MeinstDuDas FROM test CONNECT BY LEVEL <= greatest(Spalte_a,Spalte_b) ) where MeinstDuDas > (select Least(Spalte_a,Spalte_b) from test) |
Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben
Hi,
ich habe mit dem Tip folgende Abfrage zusammen gestellt:
SQL-Code:
Das Problem: Ich bekomme immer nur für einen Eintrag(1396000) aus meiner Tabelle die Werte aufgelistet. Wie kann ich das für alle Einträge aus der Tabelle erweitern?
SELECT l FROM (
SELECT LEVEL l FROM dual CONNECT BY LEVEL < = ( SELECT a.rb_endnummer AS endIndex FROM MeineTabelle a WHERE a.rb_anfangsnummer = '1396000') ) WHERE l >= ( SELECT a.rb_anfangsnummer AS startIndex FROM MeineTabelle a WHERE a.rb_anfangsnummer = '1396000') |
Re: Alle Werte zwischen zwei Zahlen mit SQL ausgeben
Hallo,
Zitat:
Momentan fällt mir da nur ein - Schleife drum machen, für nur SQL weiß ich keine Lösung, eigentlich Schade, wäre sonst so schön einfach. Schaumal, ob die Dir 'ne Idee liefern können: ![]() |
Re: Alle Werte zwischen zwei Zahlen mit SQL ausgeben
Hi,
Zitat:
Danke für den Link! Ich werde mich dort mal umschauen. |
Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben
Hi,
für den MS SQL Server gibt es eine Lösung mit einer "tally table". Evtl. hilft das auch hier weiter? ![]() |
Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben
Hallo,
einen hab' ich noch, aber bitte dafür nicht hauen:
SQL-Code:
Man nehme das SQL, führe es aus, nehme das Ergebnis und führe es aus.
select * from (
select 'SELECT l FROM (SELECT LEVEL l FROM dual ' ||'CONNECT BY LEVEL <= (' ||'SELECT spalte_b AS endIndex FROM test WHERE spalte_a = '||spalte_a ||')) WHERE l >= (' ||'SELECT spalte_a AS startIndex FROM test WHERE spalte_a = '||spalte_a ||')'||chr(10) ||'union all' as Spalte from test order by spalte_a ) union all select 'select 0 from dual' from dual Nagut, was passiert hier: Es wird mit SQL ein SQL-Statement generiert, das für jede Zeile der Tabelle eine Select ... Level ... generiert, die per union all miteinander verbunden werden. Dadurch ist am Ende ein union all zuviel, das mit einem select 0 from dual "neutralisiert" wird. |
Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben
Ach Du Sch**e :shock:. Da würde ich dann doch eher eine SP schreiben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz