Problem bei kombination von case und cast

hi zusammen, ich sitze gerade an ein paar sql abfragen und jetzt komm ich nicht weiter. Ich habe ein feld in dem ein zahlen stehen in verschiedenen länger also ‘34000’ oder ‘240’. Ich soll die zahlen die mehr als 3 stellen haben auf 3 stellen bringen. meine frage ist jetzt wie stell ich das an ohne weitere datenfelder zu erstellen? ich bin so vorgegangen das ich erstma ein case befehl gemacht habe der alle zahlen die größer als 1000 sind durch 100 teilt. jetzt hab ich schon ein feld mehr in der tabelle. dann habe ich die zahl z.b. 340,12 gecasted damit ich ein char habe der nur 3 stellen ausgibt. funktionirt aber ich habe jetzt 2 datenfelder die ich eigentlich vermeiden möchte… gibts da eine möglichkeit ? oder ist meine vorgehensweise ganz falsch ?



mfg barss

Ehrlich gesagt verstehe ich überhaupt nicht was Du willst. Du sagst “Zahlen” schreibst aber Strings (‘34000’) hin.

Warum erzeugt ein CASE Befehl eine neue Spalte in der Tabelle?

Am besten zeigst Du uns die Definition der Tabelle als CREATE TABLE Statement, ein paar INSERT INTO mit Beispieldaten und das von Dir erwartete Ergebnis der Abfrage (oder willst Du vielleicht gar kein SELECT machen, sonder versuchst Daten in einer Tabelle dauerhaft zu ändern?)

ich habe '34000’geschrieben um es hervorzuheben war jetzt vieleicht etwas doof… sind alles zahlen hier einmal der code der relevant dafür ist:
select
case
when GAS.GNAS > 1000 then GAS.GNAS / 100
end test,
cast(Test as char(3)) ohne_nachkommer ,

Ich wiederhole mich nur ungern, aber hast Du diesen Teil gelesen:

Am besten zeigst Du uns die Definition der Tabelle als CREATE TABLE Statement, ein paar INSERT INTO mit Beispieldaten und das von Dir erwartete Ergebnis der Abfrage

das ist völlig unrelevant !

Genau! So macht man sich Freunde hier, herzlich Willkommen!

test=# select i from foo;
   i
-------
 34000
   240
     3
(3 rows)

test=# select (substring(i::text,1,3))::int as i from foo;
  i
-----
 340
 240
   3
(3 rows)

Und tschüß.

böse wars garicht gemeint aber für die aufgabe war es nicht nötig so tief in die datenbank zu schauen
danke

Kein Grund, potentiellen Helfern gegenüber ausfällig zu werden. Wurde Dir scheinbar nicht in der Schule beigebracht, oder?

http://www.pg-forum.de/sql/4738-hilfe-bei-abfrage-post25929.html#post25929

Andreas, SCNR

Wenn Du uns nicht zeigst was Du haben willst (“erwartete Ergebnis”) und aus welchen Eingabedaten dieses Ergebnis stammen soll (INSERT INTO) dann kann Dir leider nicht geholfen werden.

Das INSERT und CREATE macht es für uns einfacher einen Test laufen zu lassen damit wir sicher sind, dass die Lösung auch funktioniert
Ansonsten müssten wir das alles selber nochmal tippen (vor allem das Erzeugen der Testdaten wird dann sehr umständlich)

das ist völlig unrelevant !

Warum glaubst Du, dass die Struktur Deiner Tabelle und der Daten bei einer Frage in einem Datenbankforum nicht relevant ist?