我正在将CASE语句的Expression中的参数值与字符串进行比较,然后在THEN部分中使用window函数。但是,当我的参数解析为与“要比较”值长度不同的字符串时,SQL将失败并显示“无效使用窗口函数”错误。
我从THEN中删除了window函数,只是尝试输出一个字符串,并且在两种情况下(参数解析为相同长度和不同长度的字符串)它都没有错误。
SELECT <list_of_columns>
,CASE WHEN 'cod'='code'
THEN row_number() over(partition by col1string order by col2string, col3timestamp desc nulls last)
else row_number() over(partition by col1string order by col3timestamp desc nulls last)
END as rnk
from <tablename>
这将引发错误: “错误:XX000:不支持使用窗口功能”
SELECT <list_of_columns>
,CASE WHEN 'code'='code'
THEN row_number() over(partition by col1string order by col2string, col3timestamp desc nulls last)
else row_number() over(partition by col1string order by col3timestamp desc nulls last)
END as rnk
from <tablename>
这将成功执行并给出结果