我有一个tsql查询,它会对百分比进行计算,如果结果为>则计算正常。 1,但小于1时返回0.我的计算如下:
create table dbo.#temptable (
total_sold int null,
#_in_ny int null,
percent_in_ny decimal(18,2)null
) on [primary]
insert into dbo.#temptable
select count(t.booknum) as totalsold, t.#_in_ny, 100 * t.#_in_ny / count(t.booknum)
from mytable t
这让我:
total ny sales %sales in ny
650 4 0 ---- this should show up as 0.61 since 4 is .61% of 650
答案 0 :(得分:3)
问题是SQL Server执行整数除法。最简单的解决方案是使用100.0
作为常量:
insert into dbo.#temptable
select count(t.booknum) as totalsold, t.#_in_ny,
t.#_in_ny * 100.0 / count(t.booknum)
from mytable t
答案 1 :(得分:1)
t.#_in_ny / count(t.booknum)
- 你在这里进行整数除法。将这两者转换为浮点数或小数。
insert into dbo.#temptable
select count(t.booknum) as totalsold, t.#_in_ny, 100 * CONVERT(float,t.#_in_ny) / CONVERT(float, count(t.booknum))
from mytable t
编辑:请参阅戈登的回答。虽然任何一种解决方案都有效,但他肯定比我的更有说服力。