MERGE und min/max [ERLEDIGT]

Advantage Database Server

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

MERGE und min/max [ERLEDIGT]

Beitrag von UliTs »

Hallo allerseits,

ich möchte einen Zähler erhöhen, dabei aber einen Mindestwert berücksichtigen.
Ich habe 2 Parameter: :IdBez und :nMin
Es gelingt mir nicht mit dem ADS. Beim folgenden Statement kommt die Fehlermeldung, dass im IIF-Ausdruck kein Parameter verwendet werden darf.

Code: Alles auswählen

MERGE IdVerwaltung       AS IdV
ON                          (IdV.IdBez=:IdBez)
WHEN MATCHED THEN
  UPDATE SET IdV.LetzteId  = IIF(IdV.LetzteId>:nMin,IdV.LetzteId,:nMin)+1
WHEN NOT MATCHED THEN
  INSERT     (IdBez,LetzteId)
  VALUES     (:IdBez,:nMin+1);
Zuletzt geändert von UliTs am Mo, 18. Nov 2013 22:59, insgesamt 1-mal geändert.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9361
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: MERGE und min/max

Beitrag von Tom »

Code: Alles auswählen

IIF(IdV.LetzteId>:nMin,IdV.LetzteId,:nMin)+1
Da ist die Klammer falsch gesetzt. Sie gehört hinter das ":nMin+1".
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: MERGE und min/max

Beitrag von UliTs »

Tom hat geschrieben:Da ist die Klammer falsch gesetzt. Sie gehört hinter das ":nMin+1".
Nein, dann kommt das falsche Ergebnis raus. :D
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 651
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: MERGE und min/max

Beitrag von nightcrawler »

Code: Alles auswählen

DECLARE @min INTEGER;
DECLARE @bez INTEGER;
@min=:nMin;
@bez=:IdBez;

    MERGE IdVerwaltung       AS IdV
    ON                          (IdV.IdBez=@bez)
    WHEN MATCHED THEN
      UPDATE SET IdV.LetzteId  = IIF(IdV.LetzteId>@min,IdV.LetzteId,@min)+1
    WHEN NOT MATCHED THEN
      INSERT     (IdBez,LetzteId)
      VALUES     (@bez,:@min+1);
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: MERGE und min/max [ERLEDIGT]

Beitrag von UliTs »

Vielen Dank!

Klappt wunderbar.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Antworten