Alex_winf01 Geschrieben 13. September 2010 Geschrieben 13. September 2010 Hallo, innerhalb eines Select-Befehles habe ich folgende Konstruktion: SpalteA + SpalteB + SpalteC & wenn(SpalteD = 1;"Text";"") D. h. vorne kommt die Aufsummierung der Spalten A, B und C und dann wenn SpalteD > 0 ist ein beliebiger Text, ansonsten soll nur die Aufsummierung der Spalten A, B und C erscheinen. Folgende Konstruktion habe ich probiert: SpalteA + SpalteB + SpalteC + Case WHEN SpalteD = 1 Then 'Text' Else '' End AS xyz, SpalteA, SpalteB und SpalteC kommen aus der selben Abfrage wie xyz. Leider bekomme ich eine Fehlermeldung, dass SpalteA, SpalteB und SpalteC ungültig sind. Was mache ich da falsch? Zitieren
MartinSt Geschrieben 13. September 2010 Geschrieben 13. September 2010 Die Aufsummierung ist ein numerischer Wert, den du nicht direkt mit einem String verketten kannst, sondern den du vorher erst als String formatieren mußt. Zitieren
Alex_winf01 Geschrieben 13. September 2010 Autor Geschrieben 13. September 2010 @ MartinSt Du meinst die Methoden CONCATENATE (ausdruck || ausdruck), convert bzw. cast? Zitieren
MartinSt Geschrieben 13. September 2010 Geschrieben 13. September 2010 Sowas in der Richtung; ich weiß ja nicht auf welches DB-System du dich beziehst? Zitieren
Alex_winf01 Geschrieben 13. September 2010 Autor Geschrieben 13. September 2010 @ MartinSt wir setzen eine Oracle-Datenbank ein, Version 10g Zitieren
Stefan87 Geschrieben 14. September 2010 Geschrieben 14. September 2010 (bearbeitet) Das sollte eigentlich kein Problem sein, wenn die Spalten vom Typ her auch NUMBER und nicht VARCHAR sind ? Es gibt allerdings noch ein Problem wenn du diesen Code verwendest --------------------------------- SpalteA + SpalteB + SpalteC + Case WHEN SpalteD = 1 Then 'Text' Else '' End AS xyz, --------------------------------- denn nach dem addieren von A, B und C brauchst du ein || und nicht ein + da sonst die Spalte D addiert wird .... was nicht geht wenn es sich um einen Text handelt ... --------------------------------- SpalteA + SpalteB + SpalteC || Case WHEN SpalteD = 1 Then 'Text' Else '' End AS xyz, --------------------------------- Hoffe das dir das hilft Bearbeitet 14. September 2010 von Stefan87 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.