Aufrunden in SQL Server?

8

Ich habe ein Paging-System für SQL-Server geschrieben. und es funktioniert gut, aber ich versuche, wie viele Seiten gibt es insgesamt zurückgegeben

Wenn also 5 Datensätze und 2 Datensätze pro Seite vorhanden sind, beträgt die Summe 3 Seiten

das ist was ich habe

%Vor%

und mein Ausgabeparameter ist wie folgt definiert

%Vor%

Nun funktioniert es irgendwie :-) In meinem Test gibt es 5 Datensätze und 2 Datensätze pro Seite, also gibt die obige Auswahl 2 zurück, aber es ist falsch, es sollte 3 sein

Dies ist, weil es 5/2 = ganze Zahl 2 ... wie richte ich aufrunden ...?

Ich habe die Decke müde, konnte sie aber nicht zur Arbeit bringen.

Irgendwelche Ideen?

Vielen Dank im Voraus

    
Martin 18.11.2010, 15:33
quelle

8 Antworten

12

Haben Sie versucht, entweder den Zähler und den Nenner als Gleitkomma zu werfen und dann Cieling zu verwenden?

Ganzzahloperationen ergeben immer Ganzzahlen. Probieren Sie Folgendes -

%Vor%     
Roopesh Shenoy 18.11.2010, 15:40
quelle
3

Sie können Ganzzahl-Arithmetik dafür verwenden:

%Vor%

(Ich habe diese Formel vor vielen, vielen Jahren herausgefunden (bevor es ein Internet gab, wo man solche Fragen stellen konnte) und habe es oft benutzt.)

    
Guffa 18.11.2010 15:59
quelle
2

Ganzzahlmathematik wird nicht abgerundet, sie wird abgeschnitten. Ändern Sie @RecsPerPage in ein Float anstelle von int und verwenden Sie dann in Ihrer SQL-Anweisung ceil .

    
Donnie 18.11.2010 15:42
quelle
2

SQL Server gibt immer ein ganzzahliges Ergebnis, wenn Sie zwei Ganzzahlen teilen.

Sie können ein ".0" am Ende der tatsächlich hartcodierten Werte hinzufügen oder mit "1.0" multiplizieren, um einen Feldwert zu konvertieren. Wenn Sie aufrunden wollen, dann ist der beste Weg, den ich kenne, 0,5 zu addieren und dann die normale ROUND-Funktion aufzurufen. Das funktioniert, weil ROUND_DOWN (Nummer + .5) immer gleich ROUND_UP (Nummer) ist.

Sie können ein Feld auch manuell in einen Gleitkommabereich umwandeln, wie andere darauf hingewiesen haben.

Aber beachte das

%Vor%

gibt ein Fließkomma Ergebnis zurück, während

%Vor%

liefert ein Integer Ergebnis. Verwenden Sie also das, das am besten für Sie funktioniert.

All dies wird im folgenden Beispiel veranschaulicht:

%Vor%

Hier ist eine Funktion, die Zusammenfassungen für Sie durchführt, zusammen mit einem SELECT, um Ihnen die Ergebnisse zu zeigen, die es gibt.

%Vor%     
JosephStyons 18.11.2010 15:47
quelle
0

Versuchen Sie

%Vor%     
Sadhir 18.11.2010 15:46
quelle
0

Hier ein ähnlicher Code. Die CAST-Funktionen verhindern, dass SQL automatisch gerundet wird. Stellen Sie die 0.00 auf die gewünschte Genauigkeit ein.

%Vor%

edit - Rundungsparameter korrigieren zu 0

    
Mark SQLDev 18.11.2010 15:50
quelle
0
%Vor%     
quelle
0

Behalten Sie Ihre ursprüngliche Formel, aber Sie müssen überprüfen, ob der Rest & gt; 0, und wenn ja, addiere einfach 1 zu deinem Ergebnis.

    
datagod 23.09.2011 14:55
quelle