![]() |
Datenbank: ORACLE • Version: 9 • Zugriff über: DATABASE
Abfrage als SQL-Statement
Hallo zusammen,
kriegt es hier jemand hin sowas:
Delphi-Quellcode:
in ein SELECT einer SQL-Abfrage einzubinden ?
if Query['DRUCKLITERPRODUKT'] = 'PS x V' then
begin if (Query['PS_X'] >= Query['KATART1V']) AND (Query['PS_X'] <= Query['KATART2V']) then Query['KATEGORIE_X'] := 'Art.3, Abs.3'; if (Query['PS_X'] >= Query['KAT11V']) AND (Query['PS_X'] <= Query['KAT12V']) then Query['KATEGORIE_X'] := 'I'; if (Query['PS_X'] >= Query['KAT21V']) AND (Query['PS_X'] <= Query['KAT22V']) then Query['KATEGORIE_X'] := 'II'; if (Query['PS_X'] >= Query['KAT31V']) AND (Query['PS_X'] <= Query['KAT32V']) then Query['KATEGORIE_X'] := 'III'; if (Query['PS_X'] >= Query['KAT41V']) AND (Query['PS_X'] <= Query['KAT42V']) then Query['KATEGORIE_X'] := 'IV'; end else begin if (Query['PS_X'] >= Query['KATART1DN']) AND (Query['PS_X'] <= Query['KATART2DN']) then Query['KATEGORIE_X'] := 'Art.3, Abs.3'; if (Query['PS_X'] >= Query['KAT11DN']) AND (Query['PS_X'] <= Query['KAT12DN']) then Query['KATEGORIE_X'] := 'I'; if (Query['PS_X'] >= Query['KAT21DN']) AND (Query['PS_X'] <= Query['KAT22DN']) then Query['KATEGORIE_X'] := 'II'; if (Query['PS_X'] >= Query['KAT31DN']) AND (Query['PS_X'] <= Query['KAT32DN']) then Query['KATEGORIE_X'] := 'III'; if (Query['PS_X'] >= Query['KAT41DN']) AND (Query['PS_X'] <= Query['KAT42DN']) then Query['KATEGORIE_X'] := 'IV'; end; Gruss Holger |
Re: Abfrage als SQL-Statement
Oracle sollte Derived Tables unterstützen.
SQL-Code:
select ... from (select ...) where ...;
|
Re: Abfrage als SQL-Statement
OK,
und wie mache ich das mit den grösser/gleich - Abfragen ? Gruss Holger |
Re: Abfrage als SQL-Statement
In der where Bedingung der äußeren Abfrage.
|
Re: Abfrage als SQL-Statement
Hi,
habe mir hier mal eine kleine Version gebastelt. Jetzt kommt die Fehlermeldung: 'Zu viele Werte'
Delphi-Quellcode:
Was ist falsch ?
SELECT SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER, SYSDBP.DBP_LEISTUNGSWERTE.DRUCKSTUFE DS, SYSDBP.DBP_LEISTUNGSWERTE.VOLUMENNENNWEITE VN,
(SELECT KATEGORIE, MIN_DN, MAX_DN FROM SYSDBP.DBP_KATEGORIE WHERE MIN_DN >= (DS * VN) AND MAX_DN <= (DS * VN)) FROM SYSDBP.DBP_LEISTUNGSWERTE WHERE ANLAGENNUMMER = 4000003734 Gruss Holger |
Re: Abfrage als SQL-Statement
Hallo HolgerCW,
vielleicht so...
SQL-Code:
Gruss
SELECT
CASE WHEN druckliterprodukt = 'PS x V' THEN CASE WHEN ps_x >= katart1v AND ps_x <= katart2v THEN 'Art.3, Abs.3' WHEN ps_x >= kat11v AND ps_x <= kat12v THEN 'I' WHEN ps_x >= kat21v AND ps_x <= kat22v THEN 'II' WHEN ps_x >= kat31v AND ps_x <= kat32v THEN 'III' WHEN ps_x >= kat41v AND ps_x <= kat42v THEN 'IV' END ELSE CASE WHEN ps_x >= katart1dn AND ps_x <= katart2dn THEN 'Art.3, Abs.3' WHEN ps_x >= kat11dn AND ps_x <= kat12dn THEN 'I' WHEN ps_x >= kat21dn AND ps_x <= kat22dn THEN 'II' WHEN ps_x >= kat31dn AND ps_x <= kat32dn THEN 'III' WHEN ps_x >= kat41dn AND ps_x <= kat42dn THEN 'IV' END END AS kategorie_x FROM tabelle Thorsten |
Re: Abfrage als SQL-Statement
Ja fantastsich,
das klappt. Danke und Gruss Holger |
Re: Abfrage als SQL-Statement
Hallo nochmal,
wie kann ich den Code erweitern, das sowas raus kommt:
Delphi-Quellcode:
So wie oben wird es nicht klappen. Ich hoffe nur das Du weisst, was ich meine.
SELECT
CASE WHEN druckliterprodukt = 'PS x V' THEN CASE WHEN ps_x >= katart1v AND ps_x <= katart2v THEN kategorie_x = 'Art.3, Abs.3' AND Kategorie_y = 'BlaBla' WHEN ps_x >= kat11v AND ps_x <= kat12v THEN kategorie_x = 'I' AND Kategorie_y = 'BlaBla2' END ELSE CASE WHEN ps_x >= katart1dn AND ps_x <= katart2dn THEN kategorie_x = 'Art.3, Abs.3' AND Kategorie_y = 'BlaBla' WHEN ps_x >= kat11dn AND ps_x <= kat12dn THEN kategorie_x = 'I' AND Kategorie_y = 'BlaBla' END END AS kategorie_x, Kategorie_y FROM tabelle Gruss Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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 by Thomas Breitkreuz