1

我有一个在 Oracle 中工作的 select 语句的请求,但是当我在 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'.

谢谢你。

4

1 回答 1

0

错误说这rownum不是一个有效的列名(我很高兴谷歌翻译有帮助)

消息 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%'
于 2013-07-25T13:54:16.707 回答