![]() |
Datenbank: ORACLE • Version: 10 • Zugriff über: BDE
SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Hallo zusammen,
wie bekomme ich es hin das in einer SQL-Abfrage eine Unterabfrage für die erste Zeile eine 1, die zweite eine 2, die dritte eine 1, die vierte eine 2 u.s.w. liefert ... Gruss Holger |
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
SQL-Code:
SELECT (CASE MOD(ROWNUM,2) WHEN 1 THEN 1 ELSE 2 END) AS Bla FROM Tabelle
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Das klappt nur halb.
Die erste zeile ist wohl Zeile 0 und da macht er dann auch eine 1 draus. Hast Du dafür eine Lösung ? Gruss Holger |
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Zitat:
Dann gäbe es ja keine 0 |
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Dann fange diesen Fall doch auch noch ab
SQL-Code:
SELECT ( case when ROWNUM > 0 then (CASE MOD(ROWNUM,2) WHEN 1 THEN 1 ELSE 2 END) ELSE 2 END) AS Bla FROM Tabelle;
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Ich habe einen Gedankenfehler gemacht ...
Habe mir neben die berechneten Werte mal die Zielennummern schreiben lassen: Zeilennummer Berechnete 3 1 1 1 2 2 Das Ergebnis ist richtig, nur will ich ja eigentlich egal welche Sortierung vorliegt, die oberste Zeile als 1, die nächste 2 und dann wieder 1 und danach 2 u.s.w. haben ... Ist das irgendwie hin zu kriegen ? Gruss Holger |
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Dann müsstest du eine SP schreiben.
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Was ist SP ?
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Stored Procedure
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Vielleicht mal einen Ansatz was dadrin stehen müsste ...
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Einfach dort in einer Schleife die Datensatze zurückgeben und lokale Variable umswitchen
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Habe irgendwie ein Brett vor dem Kopf, vielleicht mal ein Beispiel ?
geht es wirklich nicht in SQL vom Programm aus ? Gruss Holger |
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
![]() Zitat:
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Zitat:
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Einfach Datenmenge durchgehen und Spalte setzen. Für was brauchst du diesen alternierenden Wert?
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Will den an den RaveReport übergeben. Bei 1 = grau Zeile, bei 2 = weisse Zeile
Gruss Holger |
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Ich mache nichts mit Rave, aber gibt es da nichts ähnliches wie RecNo?
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Hallo,
wenn mit der TRvDataSetConnection gearbeitet wird, dann kann beim Ereignis OnGetRow() auf DataSet.RecNo zugegriffen werden. Freundliche Grüße |
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Dann könnte man doch theoretisch mit einem Bool' schen Array of TColor und Odd(RecNo) arbeiten, oder täusche ich mich?
|
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Zitat:
Zitat:
Delphi-Quellcode:
nur mal so als Gedanke auf den Programmierertisch geworfen...
if Odd(DataSet.RecNo) then Zeilenfarbe=grau
else Zeilenfarbe=weiss Aif der anderen Seite: wenn alles das nicht hilft, warum dann nicht 'einfach' eine Variable (oder meintwegen auch ne Property) 'ZeilenNr' verwenden, die beim BeforePrint abgefragt wird und beim AfterPrint entsprechend incrementiert wird? ...oder über eine Boolsche Variable (oder Property) IstGrau...
Delphi-Quellcode:
Ich denke, das ist doch allemal einfacher und schneller zu handeln, als umständlich irgendeine SQL-Proc zu kritzeln!? :gruebel:
procedure BeforePrint()
begin //--Integer variante: if Odd(ZeilenNr) then Zeie=grau else Zeile=weiss; //--boolesche Variante if Istgrau then Zeilenfarbe=grau else Zeilenfarbe = weiss ... end; procedure AfterPrint() begin //--Integer Variante: ZeilenNr := ZeilenNr +1; //--boolesche Variante: //--Farbzustand umkehren IstGrau := not Istgrau; ... end; |
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
Ich würde das etwas kürzen:
Delphi-Quellcode:
procedure BeforePrint()
const Farbe: array[Boolean] of TColor = (clGray,clWhite); begin Zeile.Color := Farbe[Odd(RecNo)]; end; |
Re: SQL -> Ein Unterabfrage soll immer 1 und 2 liefern
@DeddyH: :thumb: klar, optimieren geht immer (und ist in diesem Falle auch eleganter ;) )
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 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