Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Weiterverwenden eines erechneten Feldes (https://www.delphipraxis.net/152217-weiterverwenden-eines-erechneten-feldes.html)

knochen 15. Jun 2010 14:30

Datenbank: MSSQL • Version: 2005 • Zugriff über: direkt

Weiterverwenden eines erechneten Feldes
 
Hallo zusammen,

wie kann ich ein mit AS erzeugtes Feld weiterverwenden?

Das SQL Statement dazu:
SELECT EinIntegerFeld as test, test * 5 FROM Tabellenname

Wenn ich dieses Statement absetze, erscheint der Fehler Ungültiger Spaltenname 'test'.

Vielen Dank für jeden Tipp.

EarlyBird 15. Jun 2010 14:39

AW: Weiterverwenden eines erechneten Feldes
 
versuch es mal so:
Code:
SELECT EinIntegerFeld as test, EinIntegerFeld * 5 as Test2 FROM Tabellenname

knochen 15. Jun 2010 14:46

AW: Weiterverwenden eines erechneten Feldes
 
Zitat:

Zitat von EarlyBird (Beitrag 1029015)
versuch es mal so:
Code:
SELECT EinIntegerFeld as test, EinIntegerFeld * 5 as Test2 FROM Tabellenname

Danke für die schnelle Antwort, EarlyBird.
Das klappt natürlich, aber das ist nicht das, was ich will.
In Wirklichkeit ist wie immer ein wenig komplizierter. Das, was in test drinsteht, wird durch eine sehr umfangreiche case when Struktur innerhalb des vorangehenden SQL Statements errechnet. Sinn der Angelegenheit ist, dass ich es mir spare, diese case when Struktur 10 mal im Code zu wiederholen.

Gibt's noch andere Ideen?

mkinzler 15. Jun 2010 14:50

AW: Weiterverwenden eines erechneten Feldes
 
Dann verwende eine Derived Table:
SQL-Code:
select
    test, test * 5 as Test2 
from
    ( SELECT EinIntegerFeld as test FROM Tabellenname );

EarlyBird 15. Jun 2010 15:03

AW: Weiterverwenden eines erechneten Feldes
 
Du könntest Dir eine Skalarwertfunktion schreiben und in der Abfrage nutzen.
Oder Du erstellst Dir eine gespeicherte Prozedur, dort deklarierst Du eine Variable der Du den berechneten Wert zuweist. Die Variable kannst Du dann im Selectstatemant weiterverwenden


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz