CASE表达式中的窗口函数

时间:2019-07-25 18:05:18

标签: sql case amazon-redshift window-functions

我正在将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> 

这将成功执行并给出结果

0 个答案:

没有答案