按案例排序&序数不起作用

时间:2016-12-15 12:05:06

标签: postgresql amazon-redshift

将第7列排序为例 -

此代码根本不对数据进行排序:

 ORDER BY CASE WHEN '1'='2' THEN 5 
 WHEN '1'='1' THEN 7 
 ELSE 13 END

Sort ignored...

如果我将其更改为硬编码序数,则可以正常工作:

ORDER BY 7

enter image description here

1 个答案:

答案 0 :(得分:2)

只要SELECT列表中的相应表达式属于同一类型,您就可以使用表达式本身而不是SELECT列表编号来执行此操作:

SELECT expression1, expression2, ...
...
ORDER BY CASE
            WHEN 1=2
            THEN expression5
            WHEN 1=1
            THEN expression7
            ELSE expression13
         END;

如果数据类型不同,则使用类型转换为季节。

您的查询不起作用,因为只有整数文字才能用作ORDER BY中的列号。在所有其他情况下,整数代表其常数值。

如果不是这样,ORDER BY表达式很容易变得含糊不清。请看以下内容:

... ORDER BY intcol + 3;

这是否意味着“添加三个”或“从SELECT列表中添加三个表达式”?