sql - 具有多列顺序时的 CASE 表达式
问题描述
投递值如果为 0,则按以下列排序:isl_tar
, isl_saat
, ref_kod
, isl_ref
,kayit_no
Posted value 如果为 1,则根据此列进行排序:tutar
此脚本不起作用:
我想按第二种情况排序
select t.*
from TEMP_HESAP_HAREKET t
order by case 1
when 0 then
TO_NUMBER(TO_CHAR(ISL_TAR, 'YYYYMMDD') ||
SUBSTR(ISL_SAAT, 1, 2) || SUBSTR(ISL_SAAT, 4, 2))
end asc,
REF_KOD asc,
ISL_REF asc,
KAYIT_NO asc,
case 1
when 1 then
tutar end
解决方案
你似乎想要:
order by (case 1 when 1 then tutar end), -- handle that case first
TO_NUMBER(TO_CHAR(ISL_TAR, 'YYYYMMDD') ||
SUBSTR(ISL_SAAT, 1, 2) || SUBSTR(ISL_SAAT, 4, 2))
REF_KOD asc,
ISL_REF asc,
KAYIT_NO asc
我认为 on 的表达isl_tar
是正确的。似乎一个简单的列引用就足够了。
推荐阅读
- python-3.x - Python 安装问题 Cffi
- java - 我无法从多模块 Maven 项目中加载资源
- javascript - 对新状态或卸载反应本机中断循环
- javascript - 尝试导入错误:“./App”不包含默认导出(导入为“App”)
- swift - 从 UITableView 隐藏单元格
- amazon-web-services - 如何使用 Axios 从 localhost VueJS 调用服务器?
- javascript - 将数据替换为以特定字符开头并以特定字符结尾的字符串
- jmeter - Jmeter从数组中提取响应多个id
- rust - 为什么 Rust 似乎忽略了我的生命周期注释?
- nested - 十月 CMS 后端中的嵌套选项卡