SQL中的除法

Bel*_*igh 2 sql-server t-sql sql-server-2008-r2

我想将 int 数量除以一个数字,但我的输出不是我想要的。这是我的 DDL

Create Table Orders 
(
    id int IDENTITY(1,1) PRIMARY KEY NOT NULL
    ,partid varchar(100) NOT NULL
    ,qtyordered int DEFAULT '0'
    ,orderedby varchar(100) NOT NULL
    ,ordereddate date DEFAULT GETDATE()
)

Insert Into Orders (partid, qtyordered, orderedby) VALUES
('SS100', 10, 'James'), ('RR200', 5, 'Bob'), ('NN300', 3, 'Jake'), ('OO400', 5, 'Blue')
Run Code Online (Sandbox Code Playgroud)

现在我已经尝试使用 SQL Server 函数Ceiling()Floor()但没有得到我想要的输出。这是我试过的查询,我需要在 SQL Server 中做什么才能得到 2, 2, 1 的输出?

Select
partid
,CEILING(qtyordered/3) As [First] --want to be 2
,CEILING(qtyordered/3) As [Second] --want to be 2
,FLOOR(qtyordered/3) As [Third] --want to be 1
FROM Orders
WHERE partid = 'RR200'
Run Code Online (Sandbox Code Playgroud)

McN*_*ets 6

由于“qtyordered”是一个整数,您需要将其转换/转换为十进制,或使用十进制/浮点值。(3.0)

Select
partid, qtyordered
,CEILING(qtyordered/3.0) As [First] --want to be 2
,CEILING(qtyordered/3.0) As [Second] --want to be 2
,FLOOR(qtyordered/3) As [Third] --want to be 1
FROM Orders
WHERE partid = 'RR200'
GO
Run Code Online (Sandbox Code Playgroud)
部分 | 订购数量 | 第一 | 第二 | 第三
:----- | ---------: | :---- | :----- | ----:
RR200 | 5 | 2 | 2 | 1

dbfiddle在这里

根据 MS DOCS,CEILING返回与数字表达式相同的类型:

返回类型
返回与 numeric_expression 相同的类型