对子查询使用ROW_NUMBER()OVER()

Pau*_*ira 0 sql-server sql-server-2008

当我的FROM表是子查询时,我有一些T-SQL脚本需要进行ROW_NUMBER OVER()操作。

在SQL Server中禁止使用吗?

请参见下面的示例。

SELECT 
    ROW_NUMBER() OVER(PARTITION BY PATIENTALERT_ID ORDER BY SOURCE_TIME) AS RN 
        FROM (SELECT 
                MIN(PATIENTALERT_SAMPLE_ID) AS PATIENTALERT_SAMPLE_ID, 
                PATIENTALERT_ID, SOURCE_TIME, TEXT 
            FROM 
                PATIENTALERT_SAMPLE
            GROUP BY 
                PATIENTALERT_ID, SOURCE_TIME, TEXT)
Run Code Online (Sandbox Code Playgroud)

错误结果是:

消息102,级别15,状态1,第9行')'附近的语法不正确。

谢谢你的支持

Lam*_*mak 5

该问题与您的问题完全无关ROW_NUMBER。问题是您需要向派生表添加别名:

SELECT 
    ROW_NUMBER() OVER(PARTITION BY PATIENTALERT_ID ORDER BY SOURCE_TIME) AS RN 
        FROM (SELECT 
                MIN(PATIENTALERT_SAMPLE_ID) AS PATIENTALERT_SAMPLE_ID, 
                PATIENTALERT_ID, SOURCE_TIME, TEXT 
            FROM 
                PATIENTALERT_SAMPLE
            GROUP BY 
                PATIENTALERT_ID, SOURCE_TIME, TEXT) AS T;
Run Code Online (Sandbox Code Playgroud)