You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决SQL中QUALIFY子句ROW_NUMBER()排序的STRUCT类型报错问题

解决ORDER BY中STRUCT类型排序报错问题

你报错的原因是把两个CASE表达式用括号包裹在一起了,数据库会将其解析成STRUCT类型,而排序操作不支持按STRUCT类型排序。

只需要去掉包裹两个CASE的括号,让它们作为独立的排序条件即可,完全保留你想要的先按status优先级、再按type优先级、最后按registration_date降序的逻辑:

registrations AS 
( 
SELECT * 
FROM database 
QUALIFY ROW_NUMBER() OVER 
( PARTITION BY id 
ORDER BY 
CASE WHEN status = 'active' THEN 0 
WHEN status IN ('received', 'submitted') THEN 1 
WHEN status IN ('cancelled', 'rejected') THEN 2 -- 原代码中`status_`应为笔误,已修正为`status`
ELSE 3 
END, 
CASE WHEN type = 'xy' THEN 0 
WHEN type = 'yx' THEN 1 
ELSE 2 
END, 
registration_date DESC ) = 1 )

另外修正了原代码中status_的笔误,避免因字段名错误引发新问题。

内容的提问来源于stack exchange,提问作者xxx_anna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:13:12