SQL Statement
- Dieses Thema hat 5 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 18 Jahre, 7 Monaten vonGast.
- AuthorPosts
- 8. November 2004 um 10:51 Uhr #2473
ich habe drei Felder in meinem Formular:
REPOMEN (VARCHAR), REENTDAT (DATE) und REENTMEN (VARCHAR).Ich möchte in REENTMEN den Wert vom Feld REPOMEN übernehmen, wenn im Feld REENTDAT ein Wert steht.
Mein Versuch:
SELECT
REENTDAT,
REPOMEN,
‚REENTMEN‘ =
CASE
WHEN REENTDAT IS NULL
THEN “
ELSE REPOMEN
ENDliefert die Fehlermeldung "Token = was not valid. Valid Tokens: +- AS <IDENTIFIER>" zurück.
Viele Grüße
Jürgen Kemeter8. November 2004 um 11:29 Uhr #2941Hallo Jürgen,
versuch es mal so:
SELECT
REENTDAT,
REPOMEN,
CASE
WHEN REENTDAT IS NULL
THEN “
ELSE REPOMEN
END
AS RENNTMEN
….
Gruss,
Alex8. November 2004 um 12:41 Uhr #3271Hallo,
ich will den Wert vom Feld REPOMEN in das Feld REENTNMEN kopieren. Bedingung dabei ist dass das Feld REENTDAT einen Wert (Datum)enthält.
Hier die Datentypen:
REENTNDAT (DATE)
REPOMEN (VARCHAR 300)
REENTMEN (VARCHAR 300)Das habe ich ausprobiert:
SELECT
REENTNDAT,
CASE WHEN REPOMEN IS NULL THEN “ ELSE REPOMEN END AS REENTMEN
FROM HILFSSTO.REBEWDies ist die Fehlermeldung die ich zurückbekomme:
—————————
The results in a CASE expression are not compatible.
(SQL code = -581, SQL state = 42804)
—————————/jk
8. November 2004 um 16:08 Uhr #3487Hallo,
Dein letztes SQL ergibt aber etwas anderes, als Du beschrieben hast.
Der o.g. Fehler dürfte nur auftreten, wenn Du 2 unverträgliche Datentypen (z.B. Date und Varchar) als mögliches Ergebnis des CASE ausgeben würdest. In diesem Falle müsste man einen Typ auf den anderen Casten (SQL-Funktion Cast() ).Gruss,
Alex9. November 2004 um 12:13 Uhr #3630Hallo Alex,
da hat sich vor lauter Copy&Paste ein Fehler eingeschlichen. Richtig wäre es (sinngemäß) so:
——————————————————————
SELECT
REENTNDAT,
REPOMEN,
CASE
WHEN REENTNDAT IS NULL
THEN “
ELSE REPOMEN
END
AS RENNTMEN
FROM HILFSSTO.REBEW
——————————————————————
wobei HILFSSTO meine Bibliothek, und REBEW die Tabelle mit den Feldern ist.
Noch zwei Fehler hab ich leider gemacht:
REPOMEN und REENTMEN sind vom Typ her DECIMAL (7,3).Es kommt allerdings die gleiche Fehlermeldung.
Bin noch kein SQL-Profi, muss ich die CAST() – Funktion in dem Statement anwenden? Ich verstehe die Fehlermeldung nicht, es wird in der CASE-Struktur doch kein Datum ausgegeben, sondern entweder “ oder REPOMEN.Danke derweil für deine Hilfe,
Jürgen9. November 2004 um 13:15 Uhr #3737Hallo Jürgen,
das erklärt alles. Dein Problem entsteht, da Du entweder einen String (“) oder einen Wert vom Typ Decimal.
Wenn Dein Ergebnis (REPOMEN) auch den Typ Decimal haben soll, kannst Du ihm keinen Leerstring zuweisen, sondern höchsten den Inhalt NULL.
Richtig wäre z.B.
SELECT
REENTNDAT,
REPOMEN,
CASE
WHEN REENTNDAT IS NULL
THEN CAST(NULL AS DECIMAL(7,3))
ELSE REPOMEN
END
AS RENNTMEN
FROM HILFSSTO.REBEWSo muss es klappen.
Gruss,
Alex - AuthorPosts
You must be logged in to reply to this topic.