Sql server 查询(SQLServer2008Express)可以在SQLServerManagementStudio中使用,但不能在使用ADODB的Delphi中使用

Sql server 查询(SQLServer2008Express)可以在SQLServerManagementStudio中使用,但不能在使用ADODB的Delphi中使用,sql-server,delphi,tsql,sql-server-express,adodb,Sql Server,Delphi,Tsql,Sql Server Express,Adodb,我有以下疑问: WITH cte AS ( SELECT windowId, frameIndx, elemIndx, comment, ROW_NUMBER() OVER (PARTITION BY frameIndx ORDER BY elemIndx DESC) AS rn FROM dbo.translations WHERE windowId = 1 AND frameIn

我有以下疑问:

WITH cte AS (
    SELECT
        windowId, frameIndx, elemIndx, comment, 
        ROW_NUMBER() OVER (PARTITION BY frameIndx ORDER BY elemIndx DESC)
    AS
        rn
    FROM
        dbo.translations
    WHERE
        windowId = 1 AND frameIndx IN (
            SELECT
                indx
            FROM
                dbo.translations_window
            WHERE program_id = 1 AND active = 1
    )
)
SELECT
    windowId, frameIndx, elemIndx, comment
FROM
    cte
WHERE
    rn = 1
在SQL Server 2008 R2 Developer(无论以何种方式)、SQL Server 2005 Express和SQL Server 2008 R2 Express中使用management studio运行查询时,都不会出现任何问题(这是过去两个版本的工作)。但是,当我尝试使用Delphi中的ADODB执行此查询时,我得到一个错误,即

Incorrect syntax near the keyword WITH

在SQL的express版本中是否不允许此类查询?查询中的问题是什么?客户端使用SQL express,因此我需要找到在express版本中运行的此问题的解决方案。

我不知道这是否有帮助,但您可以在查询之前尝试:

; WITH cte AS (
...

听起来ADODB不支持这个…所以4张赞成票和一张接受票。。。。Sambatyon确认这解决了问题吗?如果是这样的话,我也会投票。我可以确认在ADODB查询中使用CTE是必要的;在使用之前,基本上是“确定确定”。