Снежинка — Не может быть вложена в другую оконную функцию

#window #snowflake-cloud-data-platform

Вопрос:

 SELECT  BEST_CAV_BUSINESS_UNIT_NAME, SCMS_NAME
, SUM(TOTAL_ACV - MULTI_YEAR_COMPONENT_OF_ACV) OVER (PARTITION BY BEST_CAV_BUSINESS_UNIT_NAME, QUARTER_WITH_YEAR) AS Bookings_Net 
, ROW_NUMBER() OVER (ORDER BY Bookings_Net DESC)
FROM SBG_DB.SBG_SBGIOPS_BV.BV_SECURITY_SUBSCRIPTION_TOP_CUSTOMERS_FOR_ACV
where EDITION IS NOT NULL  
AND BEST_CAV_BUSINESS_UNIT_NAME IS NOT NULL
AND (NEW_ACV <> 0 OR RENEW_acv <> 0 AND total_acv <> 0)
AND QUARTER_WITH_YEAR IN ('20213')
ORDER BY Bookings_Net DESC 
 

Для приведенного выше запроса я получаю следующую ошибку

«Может не быть вложено в другую оконную функцию» — Ошибка компиляции

Комментарии:

1. У вас есть две оконные функции, когда кажется, что у вас может быть только одна. Просто используйте ROW_NUMBER() из раздела функции первого окна.

Ответ №1:

Попробуйте это :

 select 
* 
 , ROW_NUMBER() OVER (ORDER BY Bookings_Net DESC)
from 
(
SELECT  
      BEST_CAV_BUSINESS_UNIT_NAME
    , SCMS_NAME
    , SUM(TOTAL_ACV - MULTI_YEAR_COMPONENT_OF_ACV) OVER (PARTITION BY BEST_CAV_BUSINESS_UNIT_NAME, QUARTER_WITH_YEAR) AS Bookings_Net 
FROM 
    SBG_DB.SBG_SBGIOPS_BV.BV_SECURITY_SUBSCRIPTION_TOP_CUSTOMERS_FOR_ACV
where 
     EDITION IS NOT NULL  
 AND BEST_CAV_BUSINESS_UNIT_NAME IS NOT NULL
 AND (NEW_ACV <> 0 OR RENEW_acv <> 0 AND total_acv <> 0)
 AND QUARTER_WITH_YEAR IN ('20213') ) 
ORDER BY Bookings_Net DESC 
 

введите описание изображения здесь