Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
窗口函数不能在另一个窗口函数或聚合的上下文中使用。SQL Server错误_Sql_Sql Server - Fatal编程技术网

窗口函数不能在另一个窗口函数或聚合的上下文中使用。SQL Server错误

窗口函数不能在另一个窗口函数或聚合的上下文中使用。SQL Server错误,sql,sql-server,Sql,Sql Server,我正在尝试获取排名的行号。以下是查询: SELECT * FROM ( SELECT DISTINCT TOP 100 PERCENT rank() OVER ( PARTITION BY o.panel_id ,o.combo_type_code ORDER BY row_number() OVER ( ORDER BY o.panel_id

我正在尝试获取排名的行号。以下是查询:

 SELECT *
FROM (
    SELECT DISTINCT TOP 100 PERCENT rank() OVER (
                PARTITION BY o.panel_id
                ,o.combo_type_code ORDER BY row_number() OVER (
                        ORDER BY o.panel_id
                        )
                ) AS rank
            ,panel_code
        FROM tbk_offer_head o
            ,tbk_combo_type ct
            ,tbk_panel p
        WHERE o.panel_id = p.panel_id
            AND o.combo_type_code = ct.combo_type_code
            AND o.panel_id IN (
                SELECT p.panel_id
                FROM tbk_panel p
                WHERE p.campaign_id = 7392
                )
        ) A
    WHERE A.rank = 1
    ORDER BY panel_code

获取错误后,窗口函数不能在另一个函数的上下文中使用。请帮我解决这个问题。

我不知道你到底想做什么。但您肯定应该学会使用正确的显式连接语法

但是没有必要嵌套这些函数。您的逻辑应等同于:

row_number() over (partition by o.panel_id, o.combo_type_code 
                   order by o.panel_id
                  ) as rank
为什么使用行数而不是秩?您的原始订单使用了从未重复的行号。因此,如果rank可以使用它,那么所有值都将是不同的,并且即使面板id重复,rank也将等同于行号。

为什么需要行号?您只需按o.panel_id订购即可获得相同的结果。