AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Berechnete Spalte erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Berechnete Spalte erstellen

Ein Thema von TurboMagic · begonnen am 22. Mai 2022 · letzter Beitrag vom 22. Mai 2022
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.815 Beiträge
 
Delphi 12 Athens
 
#1

Berechnete Spalte erstellen

  Alt 22. Mai 2022, 15:06
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDAC
Hallo,

ich habe in einer Datenbanktabelle eine Currency Spalte und möchte
je nach dem ob der Betrag darin positiv oder negativ ist in einer anderen Spalte
(= "berechnete" Spalte) ein entsprechendes Kennzeichen haben.

Gibt's dafür einen Lösungsansatz?
Falls ja, wie sieht der aus?

Das würde nämlich eine gewisse Sortierlogik sehr vereinfachen.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#2

AW: Berechnete Spalte erstellen

  Alt 22. Mai 2022, 16:16
Per Trigger beim Insert und / oder Update.
SQL-Code:
CREATE TABLE TEST
(
  BETRAG DECIMAL(18,4),
  PLUSMINUS INTEGER
);

SET TERM ^ ;
CREATE TRIGGER TR_Test_PlusMinus FOR test ACTIVE
BEFORE INSERT or UPDATE POSITION 0
AS BEGIN
  if (new.betrag < 0) then new.PlusMinus = 0;
  else new.PlusMinus = 1;
END^
SET TERM ; ^

insert into test (betrag) values (-1.0);
insert into test (betrag) values (1.0);

select * from test;

Betrag PlusMinus
-1.0000   0
 1.0000   1
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.815 Beiträge
 
Delphi 12 Athens
 
#3

AW: Berechnete Spalte erstellen

  Alt 22. Mai 2022, 17:16
Sehe ich das richtig, dass das dann eine persistente Spalte sein müsste?
Gibt's auch was, das beim Select funktioniert?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#4

AW: Berechnete Spalte erstellen

  Alt 22. Mai 2022, 17:34
Vielleicht solltet Du zuerst einmal etwas genauer spezifizieren, was Du vor hast. Momentan hab' ich keinerlei Vorstellung davon, wofür das gut sein soll.

select Betrag from Tabelle order by 1 sollte erstmal die Beträge von -unendlich bis +unendlich in aufsteigender Reihenfolge sortieren, select Betrag from Tabelle order by 1 desc dito., nur absteigend sortiert.

Aber vermutlich ist das ja jetzt nicht zwingend das, was Du erreichen möchtest.
SQL-Code:
select
Betrag,
case when betrag < 0 then -1 else +1 end as BerechneteSpalte
from Tabelle
Das ist jetzt nicht statisch.

Oder:
SQL-Code:
select
  Betrag,
  case when betrag < 0 then 1 else 0 end as IchBinNegativ,
  case when betrag > 0 then 1 else 0 end as IchBinPositiv,
  case when betrag = 0 then 1 else 0 end as IchBin0,
  case when betrag is null then 1 else 0 end as IchBinNull
from Tabelle
Das ist auch nicht statisch.
SQL-Code:
select
  Sum(Betrag) as Betrag_Summe,
  Sum(IchBinNegativ) as AnzahlWerteDieNegativSind,
  Sum(IchBinPositiv) as AnzahlWerteDiePositiveSind,
  Sum(IchBin0) as AnzahlWerteDie0Sind,
  Sum(IchBinNull) as AnzahlWerteDieNullSind
from (
  select
    Betrag,
    case when betrag < 0 then 1 else 0 end as IchBinNegativ,
    case when betrag > 0 then 1 else 0 end as IchBinPositiv,
    case when betrag = 0 then 1 else 0 end as IchBin0,
    case when betrag is null then 1 else 0 end as IchBinNull
  from Tabelle
)
SQL-Code:
select
  Sum(Betrag) as Betrag_Summe,
  Sum(case when betrag < 0 then 1 else 0 end) as AnzahlWerteDieNegativSind,
  Sum(case when betrag > 0 then 1 else 0 end) as AnzahlWerteDiePositiveSind,
  Sum(case when betrag = 0 then 1 else 0 end) as AnzahlWerteDie0Sind,
  Sum(case when betrag is null then 1 else 0 end) as AnzahlWerteDieNullSind
from Tabelle
Nur, was machen wir jetzt damit?
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.815 Beiträge
 
Delphi 12 Athens
 
#5

AW: Berechnete Spalte erstellen

  Alt 22. Mai 2022, 17:41
Danke, das muss ich Mal ausprobieren.
Ich habe ein VST und wenn man da auf den Header klickt
wird die Sortierreihenfolge durch einen Select umgesetzt,
was für die eine Spalte des VST, die nicht direkt aus der
DB kommt so halt bisher nicht möglich.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.815 Beiträge
 
Delphi 12 Athens
 
#6

AW: Berechnete Spalte erstellen

  Alt 22. Mai 2022, 18:03
Funktioniert! Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 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