我在 Snowflake 中有一个查询,其中我返回数字和 varchar 值,并且正在努力使排序正常工作。
对于上下文,此列是通过将两个现有列的值相除来计算的,并且将显示数字,除非计算中的某些内容无效。例如,如果计算尝试除以零,单元格将显示一条错误消息来指示这一点。但是,如果计算有效,则会显示数值。
我在处理这些数据的排序时遇到困难。
这是我到目前为止所拥有的,但它返回排序列表的开头和结尾的 varchar 值。但是,我只希望这些 varchar 值显示在列表的开头。
SELECT * FROM your_table ORDER BY
CASE
WHEN ISNUMERIC("myfield") = 0 THEN 0
ELSE 1
END,
CASE
WHEN ISNUMERIC("myfield") = 0 THEN "myfield"
ELSE NULL
END,
TRY_CAST("myfield" AS FLOAT)
先按数字排序,然后按
myfield
值排序:
SELECT *
FROM your_table
ORDER BY TRY_CAST("myfield" AS FLOAT), "myfield";