【发布时间】:2012-06-28 08:23:24
【问题描述】:
我正在使用 SQL Server 中的 ROW_NUMBER() 函数来创建一个名为 RowNumber 的新列。
但是当我稍后在同一查询中引用 WHERE 语句中的这个新字段时,我得到了这个错误,即使该字段应该是一个整数:
将 varchar 值 'RowNumber' 转换为数据类型 int 时转换失败
这是我的查询:
SELECT
ROW_NUMBER() OVER(PARTITION BY c.Node_base ORDER BY sum(c.Score) DESC) AS "RowNumber",
c.Node_base, c.Node_forslag, sum(Score)
FROM
t_input as c
WHERE 'RowNumber' < 11
GROUP BY c.Node_base, c.Node_forslag
ORDER BY c.Node_base desc
【问题讨论】:
-
误诊。它无法转换第 6 行的字符串
'RowNumber'。这不是字段名称,它只是一个字符串。也可以说WHERE 'ThisIsAString' < 11。由于<需要两个值是相同的类型,它尝试将字符串转换为 INT,但失败了。 -
'这是一个字符串文字。' “这是一个带引号的标识符。”请注意区别。
标签: sql sql-server type-conversion row-number