窗口函数不能在另一个窗口函数或聚合的上下文中使用。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订购即可获得相同的结果。