Seite 1 von 1

MERGE und min/max [ERLEDIGT]

Verfasst: Mo, 18. Nov 2013 12:33
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);

Re: MERGE und min/max

Verfasst: Mo, 18. Nov 2013 12:53
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".

Re: MERGE und min/max

Verfasst: Mo, 18. Nov 2013 13:00
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

Re: MERGE und min/max

Verfasst: Mo, 18. Nov 2013 15:32
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);

Re: MERGE und min/max [ERLEDIGT]

Verfasst: Mo, 18. Nov 2013 22:59
von UliTs
Vielen Dank!

Klappt wunderbar.