2013-07-25 55 views
1

我有一个select语句在Oracle中工作,但是当我在SQL Server中执行它时会引发异常;要求是:在选择语句的select语句中使用

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'. 

谢谢。

+2

是'rownum'在表中的列,或者Oracle的'rownum'功能?如果是后者,请查看SQL Server的'row_number()'功能:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/3878bca7-6418-40e7-b77f-1ebe5a66ae24/how-can -rownum-of-oracle-be-presented-in-tsql – LittleBobbyTables

回答

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%' 

编辑看来,你是移植自甲骨文这个查询,所以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%' 
+0

这个和'rownum'不是有效的SQL Server函数 – LittleBobbyTables

+0

问题不在别名中,而是在“rownum as non_existant”中! – ucef

+0

@ucef Alias是另一个问题,即一旦他修复了命名错误,OP将很快地命中。 – dasblinkenlight