Wie kann ich umwandeln der division von zwei integer-Werte in eine Dezimalzahl mit T-SQL gegen eine iSeries-AS/400-Datenbank?
Vorausgesetzt, die folgende Abfrage:
SELECT
ID,
COUNT(1) AS NumRecords,
SUM(Quantity) AS TotalQty
SUM(Quantity)/COUNT(1) AS Avg
FROM SOME_TABLE
GROUP BY ID
Recht jetzt kehrt es zurück:
ID NumRecords TotalQty Avg
1 15 6 2
Möchte ich wieder einen decimal-Wert mit einer Skala von 2 für Avg
(z.B. "2.5").
Ich habe versucht, zu CAST
die calcluation als DECIMAL, NUMERIC, FLOAT, VARCHAR, aber es gibt immer eine ganze Zahl.
InformationsquelleAutor Eric Belair | 2011-10-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie wandeln Sie die Eingaben für die Berechnung nicht das Ergebnis. Auch irgendeinem Grund Sie nicht mit den
AVG
Funktion?Ich brauche noch einen CAST rund um die gesamte Berechnung. So geben Sie einen Maßstab, müssen Sie es rund um die beiden Eingänge und die gesamte Berechnung.
Sie sollten nur brauchen, um zu wirken-Eingang zu
decimal
zu vermeiden integer-division zu machen, dass der Rückgabetyp mehr vorhersehbar.InformationsquelleAutor Martin Smith
Ist eine alternative Lösung über implizite Typumwandlung. Ich fand, dass das viel sauberer SQL als auch. Die Genauigkeit wird bestimmt durch die Anzahl der abschließenden Nullen verwendet, wenn durch Multiplikation mit 1.
InformationsquelleAutor ejc