Spalte mit decimal und integer

Alex2000

Benutzer
Beiträge
9
Hallo,

in einer Tabelle habe ich vier Zeilen für Median und Mittelwert , Zellen-Datenformat ist decimal mit zwei Nachkommastellen. Jetzt will ich am Ende der Tabelle eine fünfte Zeile hinzufügen, die Integer als Datenformat hat (z.B. Anzahl der betrachteten Datenmenge). Wie kann ich das machen ? Also, gleiche Spalte hat darunter vier Zellen mit Decimal-Format und eine fünfte Zelle mit Integer ?
Besten Dank im voraus.
 
Werbung:
Der Datentyp wird für jede Spalte festgelegt und ist immer daher immer der selbe. Es hindert dich aber grundsätzlich nichts daran in eine Decimal-Spalte eine Ganzzahl einzugeben.
ABER, um dem Grundkonzept einer Datenbank Genüge zu tun muss ich darauf hinweisen - stell sicher dass die Information immer an der richtigen Stelle steht. Informationen die zueinander gehören, sollten wenn möglich in die selbe Zeile stehen.
 
Das geht schon damit los das deine Zeilen eigentlich die Spalten sein müssten, zumindest in einer normalisierten Tabelle. Also eine Spalte Median, eine Mittelwert, etc. Oder ich verstehe dich falsch.
 
Hallo nochmal,

um mein Problem besser zu verstehen , hier ist ein Beispiel dazu :

Typ Gesamt Männer Frauen
Mittelwert von Noten2,772,772,77
Median von Noten2,842,852,82
Anzahl betrachteter Noten469,00400,0069,00

die letzte Zeile sollte die Anzahl der betrachteten Noten zeigen, für die die Mittelwert und Median oben berechnet wurde.
Und weil es um eine Anzahl geht , sollte die von Typ INTEGER sein (also, ohne Nachkommastelen).

Viele Grüße
 
2 Lösungen
a) Du kümmerst dich um die Darstellung nicht um die Abbildung in der Datenbank; ob in der Datenbank 400,00 oder 400 steht ist eigentlich kaum relevant.
b) du speicherst die Daten richtig. Ich vermute da gibt es noch mehr Daten zu den Noten zB. Jahreszahlen, Fächer udgl.
Sollten die Detaildaten in bereits in einer anderen Tabelle stehen ist diese Tabelle sowieso überflüssig, ansonsten.
ZeitraumFachTypWertGeschlechtAnzahl
2022xyMittelwert2,77Männer400
2022xyMedian2,85Männer400
2022xyMittelwert2,77Frauen69
2022xyMedian2,82Frauen69

Wenn die z.B. so gespeichert würden kannst du im Falle von Auswertungen viel flexibler arbeiten. Vergleiche über Jahre, Fächer, geschlechter(un)spezifisch usw.
 
Danke MDDaniel !

Ich bin leider gezwungen, die Daten wie in der Ausgabe-Tabelle oben auszugeben (Der Nutzer wollte es so haben). Und es stimmt, dass es um die Darstellung der Daten handelt , aber hier meine ich : egal ob die Zahlen als integer oder character im Code verwendet werden, Hauptsache dass in der letzten Zeile keine komma und keine Nachkommastellen (die zwei nulls) stehen.

Danke nochmal !
 
Ich bin leider gezwungen, die Daten wie in der Ausgabe-Tabelle oben auszugeben (Der Nutzer wollte es so haben)
Das hat man oft, dass Nutzer etwas haben wollen, z.B. mehr PS ohne CO2 Ausstoß. Dafür muss man dann u.U. dicke Bretter bohren.
Die Darstellung hat aber nichts mit der Datenhaltung / Datenstruktur zu tun. Den Hinweisen von MDDaniel und ukulele kann ich nur beipflichten. Du hast aber eine Chance, beides zu bekommen.
Außerdem ist es erlaubt, Nutzer darauf hinzuweisen, wie ungewöhnlich ihre Wünsche sind oder auch der Hinweis auf typische, kulturelle Eigenarten, wie Schreiben von Links nach Rechts und Addition oder andere Operationen in Spalten.

In diversen Tools (z.B. Reporting- oder Spreadsheet-) hat man außerdem die Möglichkeit der Transformation oder Pivot Operation, wo man Zeilen zu Spalten umwandelt und umgekehrt.

Datenbanken sind in der Struktur ziemlich statisch, die gleiche Information gehört in die gleiche Spalte, mehrere davon untereinander. Damit lassen sich auch diverse Aggregationen bilden, ebenfalls in der gleichen Spalte, fertig aufsummiert, gezählt oder wie auch immer, alles bequem mit einfachen Queries.

Deine Darstellung bedarf also etwas Reporting Aufwand und wenn Du die Speicherstruktur genau so haben willst, auch deutlichen Aufwand in der Datenverarbeitung und Speicherung. Viel Programmierung und Schubserei von Bits und Bytes, lange Erstellungsdauer, hohe Fehleranfälligkeit, gering(st)e Flexibilität.
 
Dazu fällt mir nur noch ein: Kann man machen, wird halt Scheiße.

Die Datenhaltung von @MDDaniel ist korrekt. Um das umzudrehen in der Ausgabe nutzt du PIVOT. Wenn das mit der Formatierung unbedingt sein muss probiere das von @t-sql oder vermutlich geht es auch mit replace(cast('400,00' as nvarchar),'.00','') oder mit ungefähr 99 anderen Bastelleien.
 
Nach dem Eingangspost ging es nur und ausschließlich um die Ausgabe ohne die Nachkommastellen. Aber man kann dafür natürlich auch gleich das ganze Datenbankdesign umschmeißen und hat trotzdem noch nicht das Eingangsproblem gelöst.
 
Danke t-sql und allen anderen !

Ich habe folgendes probiert : select TRIM('.00' FROM '70.00') ;
Da sollte ich 70 als Ergebnis bekommen aber leider bekam ich 7 ! Der Code hat nicht nur die '.00' getrimmt sondern auch die null vor dem Komma ! Ich habe dann versucht die Zahl (hier 70) mit 10 zu multiplizieren dann 1 dazu addieren (d.h. 701.00) und vom Ergebnis '1.00' zu TRIMen aber leider ohne Erfolg.
Ich fühle mich sehr nah daran aber fehlt nur ein Schritt.

Vielen Dank an alle !
 
Dann halt
Code:
SELECT replace('70.00','.00','');
wie in #9 vorgeschlagen.

Es ist halt eine Zweckentfremdung einer Datenbank zur Tabellenkalkulation mit Ausgabeformatierung. Da wird man immer was zu frickeln haben.
 
Werbung:
Nach dem Eingangspost ging es nur und ausschließlich um die Ausgabe ohne die Nachkommastellen. Aber man kann dafür natürlich auch gleich das ganze Datenbankdesign umschmeißen und hat trotzdem noch nicht das Eingangsproblem gelöst.

Das ist so nicht korrekt. Es ging im Eingangspost nicht um die Ausgabe sondern um die Eingabe.

. Jetzt will ich am Ende der Tabelle eine fünfte Zeile hinzufügen, die Integer als Datenformat hat (z.B. Anzahl der betrachteten Datenmenge). Wie kann ich das machen ?

Von daher waren auch der 1 Lösungsansatz sich um die Darstellung der Daten zu kümmern und erst der 2 die veränderte Struktur, die das Problem ebenfalls löst.
 
Zurück
Oben