使用计算的TSQL查询不返回小于1的值

时间:2016-09-08 21:07:59

标签: sql-server tsql

我有一个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

2 个答案:

答案 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

编辑:请参阅戈登的回答。虽然任何一种解决方案都有效,但他肯定比我的更有说服力。