2012-10-03 30 views
5

Tôi có trường được tính toán 'MySum' trong truy vấn bên trong có giá trị sau khi tính là 58.Định dạng SQL như của vòng loại bỏ số thập phân

Tôi cần nhận 20% giá trị này.

Nếu tôi đưa ra:

MySum * 20 /100, I get 11 

Nếu tôi đưa ra:

((20 * CAST(MySum as decimal(6,2)))/100) , I get 11.60000 

Nếu tôi cho

Round(((20 * CAST(MySum as decimal(6,2)))/100), 2), I still get 11.60000 

Tôi muốn điều đó,

Nếu kết quả đến 11,6, nó sẽ hiển thị 12 và nếu kết quả là 11.4, nó sẽ hiển thị 11.

Tôi muốn làm tròn giá trị. Bất kỳ chức năng cho điều đó?

Trả lời

22

sử dụng ROUND() (See examples) chức năng trong máy chủ sql

select round(11.6,0) 

kết quả:

12.0 

EX2:

select round(11.4,0) 

kết quả:

11.0 

nếu bạn không muốn phần thập phân, bạn có thể làm

select cast(round(11.6,0) as int) 
+1

Tôi không muốn chữ số thập phân. Giống như thay vì Round, tôi sử dụng CEILING. Định dạng giá trị mà tôi nhận được trong CEILING, giống như tôi cần ở đây, nhưng bằng cách làm tròn các giá trị. – RMN

+1

@RMN: Vui lòng xem câu lệnh chọn cuối cùng trong câu trả lời của tôi –

+0

Nó cũng hoạt động với OLEDB. Tôi đã sử dụng nó trong một bảng DBF (foxpro) và nó hoạt động hoàn hảo. –

1
CAST(Round(MySum * 20.0 /100, 0) AS INT) 

FYI

MySum * 20/100, tôi nhận được 11

Điều này là do khi tất cả 3 toán hạng là INTs, SQL Server sẽ làm thực hiện toán số nguyên , từ trái sang phải, cắt ngắn tất cả các kết quả trung gian.

58 * 20/100 => 1160/100 => 11 (truncated from 11.6) 

Ngoài ra cho các hồ sơ ROUND (m, n) trả về kết quả cho chữ số thập phân n, không con số n đáng kể.

+0

Sai lầm của tôi, tôi đã không đề cập đến.Ngay cả Round ((20 * CAST (MySum dưới dạng thập phân (6,2)))/100), 0), cho 12.00000 nhưng tôi chỉ muốn 12, loại bỏ các chữ số sau dấu thập phân. – RMN

+0

Những 'CAST (như INT)' nào. – RichardTheKiwi

1

kiểm tra các round chức năng và làm thế nào các công trình length tranh cãi. Nó điều khiển hành vi của độ chính xác của kết quả

+0

http://msdn.microsoft.com/en-us/library/ms175003 (SQL.90).aspx dành cho tiếng Anh –

-1
SELECT CONVERT(INT, 11.4) 

KẾT QUẢ: 11

SELECT CONVERT(INT, 11.6) 

KẾT QUẢ: 11

Các vấn đề liên quan