小编Hel*_*ena的帖子

在SQL Server 2008中计算对数时出现无效的浮点运算错误

在Microsoft SQL Server 2008中,我有一个表,比如说myTable,包含大约600k行(实际上,它是连接其他几个表的结果,但我认为这并不重要).它的一个列,比如value数字类型(6,2).

简单的查询SELECT value FROM myTable ORDER BY value当然返回大约600k的数字,从1.01(即最低)开始,到70.00(最高)结束; 没有NULLs或其他值.

请注意,所有这些值都是数字和正数.但是,在调用时SELECT LOG(value) FROM myTable,我收到错误消息"发生了无效的浮点运算".

运行查询约3分钟后,始终显示此错误.将600k值复制到Excel并计算其LN()时,绝对没有问题.

我试过转换value成真实版或浮动版,这根本没用.最后我找到了一个解决方法:SELECT LOG(CASE WHEN value>0 THEN value ELSE 1 END) FROM myTable.这有效.但是,当所有价值观都是积极的时候呢?我试图取结果并将对数与Excel计算的对数进行比较 - 它们都是相同的(在某些行中只出现10 ^( - 15)或更小的顺序的差异,这几乎肯定是由不同的准确度给出的) .这意味着声明中的条件CASE总是正确的,我想.

有谁知道为什么会出现这个错误?任何帮助赞赏.谢谢.

sql sql-server-2008

8
推荐指数
1
解决办法
6345
查看次数

查询以查找组中的第一个和第二个最大值

我有这样的查询:

SELECT
 DATEPART(year,some_date),
 DATEPART(month,some_date),
 MAX(some_value) max_value
FROM
 some_table
GROUP BY
    DATEPART(year,some_date),
    DATEPART(month,some_date)
Run Code Online (Sandbox Code Playgroud)

这将返回一个表,其中包含:year,month,该月份的最大值.

我想修改查询,以便我可以获得: 年,月,月份的最大值,每行的第二大值.

在我看来,众所周知的解决方案,如"TOP 2","不在前1"或子选择将无法在这里工作.

(具体来说 - 我正在使用SQL Server 2008.)

感谢任何帮助,thx.

sql sql-server-2008

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

sql ×2

sql-server-2008 ×2