[英]Bigquery SQL Standard Rank()
我必须将所有旧版 SQL 转换为标准 SQL。
在我将其切换到标准 SQL 后,我正在尝试加入和排名(),但我收到一条错误消息:
“arguments 的数量与分析 function RANK 不匹配。支持的签名:RANK()”
这是否意味着 function RANK() 在 SQL 标准中不起作用? Bigquery 突出显示“RANK(MILESTONE)”作为错误。
非常感谢您的帮助。
JOIN
(SELECT * FROM
(SELECT
CASE WHEN MILESTONE NOT LIKE '%M0' THEN 'CWV' ELSE MILESTONE END MILESTONE
, MAX((LAST_MODIFIED_DATE)) AS LAST_MODIFIED_DATE
, RANK(MILESTONE) OVER (ORDER BY MILESTONE DESC) AS RANK2 ------------NEED FIXING
FROM `XXXXX.com:dataservices.Finance.FINANCE_SF_PRODUCT_COST_SNAPSHOT`
WHERE LOCKED IS false
AND (DATE(LAST_MODIFIED_DATE) = (SELECT MAX(DATE(LAST_MODIFIED_DATE))
FROM `XXXXXX.com:dataservices.Finance.FINANCE_SF_PRODUCT_COST_SNAPSHOT`)
OR MILESTONE LIKE 'M0')
AND PMD_PRODUCT_STATUS NOT IN ('Canceled','End of Life','No Longer Shipping')
AND (MILESTONE NOT LIKE '%Exit%' OR MILESTONE NOT LIKE '%M0' OR MILESTONE NOT LIKE '%WP%')
AND MILESTONE <> '2021_Q2_M0' -- need to show new qtr after each 20th of the month (just increase the Q#+1)
GROUP BY 1
ORDER BY 2 DESC
)
WHERE RANK2 < 4 ------------NEED FIXING
) MILE
ON PCS.MILESTONES = MILE.MILESTONE
rank() 没有在任何数据库中获取任何参数。
所以:
select ...
, RANK() OVER (ORDER BY MILESTONE DESC) AS RANK2
...
我假设您打算按您分组的表达式排序:
select ...
, RANK() OVER (ORDER BY CASE WHEN MILESTONE NOT LIKE '%M0' THEN 'CWV' ELSE MILESTONE END DESC) AS RANK2
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.