【发布时间】:2014-07-23 20:06:27
【问题描述】:
我正在将我的数据库从 Oracle 迁移到 Sql Server。 我的表定义如下(在 MS SQL Server 2012 中):
CREATE TABLE DEMO_TABLE(
ID BIGINT IDENTITY(1,1) NOT NULL,
COLUMN_1 BIGINT NULL,
COLUMN_2 VARCHAR(256) DEFAULT NULL,
DATE_CREATED DATETIMEOFFSET DEFAULT SYSDATETIMEOFFSET() NULL,
OPERATIONS NUMERIC(10,0) DEFAULT 0 NULL,
CONSTRAINT PK_DEMO_TABLE PRIMARY KEY (ID)
)
效果很好。 现在,我在 Oracle 中有一条 select 语句如下:
select * from (select
COLUMN_1,
COLUMN_2,
DATE_CREATED,
OPERATIONS,
SYSTIMESTAMP,
row_number()
over (order by date_created DESC) rn
from
DEMO_TABLE
where
COLUMN_1 = 3 AND
OPERATIONS IN
(1,2,3,4)
AND COLUMN_2='sometext'
AND DATE_CREATED <= SYSTIMESTAMP
) where rn between 1 and 100 order by rn
我在将此 select 语句从 Oracle 转换为 SQL Server 时遇到问题。 此查询在 Oracle 中运行良好,但在 SQL Server 中出现以下错误:
Msg 156, Level 15, State 1, Line 17
Incorrect syntax near the keyword 'where'.
我无法弄清楚这里有什么问题。请帮忙!
【问题讨论】:
-
您在问题标题中有 SQL Server 但标记了 Oracle、MySQL?
-
@MurDeR 是的,因为我认为查询中可能存在一些逻辑问题,这与我使用的服务器无关。
标签: mysql sql sql-server oracle tsql