我有一个请求,其中一个select语句在Oracle中有效,但是当我在SQL Server中执行它时会引发异常;请求是:
SELECT non_existant FROM
(SELECT rownum AS non_existant ,cab, validite FROM tmp_rapprochement)
WHERE validite like '%non_existant%'
错误是:
Msg 207, Niveau 16, État 1, Ligne 2 Nom de colonne non valide : 'rownum'.
谢谢。
答案 0 :(得分:0)
错误说rownum
不是有效的列名(我很高兴Google翻译有帮助)
消息207,级别16,状态1,行2无效的列名称'rownum'。
您需要先修复该错误 - 确保select
列表中的所有列都已在表中定义。
一旦你完成了这个,你需要为内部选择提供一个别名,如下所示:
SELECT non_existant FROM
(SELECT rownum AS non_existant ,cab, validite FROM tmp_rapprochement) x
-- x above is an alias, it is mandatory in SQL Server syntax.
WHERE validite like '%non_existant%'
编辑您似乎正在从Oracle移植此查询,因此rownum
不是真正的列。在这种情况下,您应该使用row_number
函数替换它,如下所示:
SELECT non_existant FROM
(SELECT row_number() OVER (Order by cab) AS non_existant
, cab -- ^^^ Put rapprochement's primary key there
, validite FROM tmp_rapprochement
) x -- x is an alias, it is mandatory in SQL Server syntax.
WHERE validite like '%non_existant%'