sql - sql中的条件order by子句

标签 sql oracle

我有一个查询应该根据列值按 asc 或 desc 对结果进行排序。

例如

如果类型为 manager 的员工存在 THEN order by join_date, bith_date ASC
否则,如果员工是开发人员,则通过加入日期、出生日期 DESC 订购。

我想实现以下目标,但无法实现。

ORDER BY CASE WHEN employee_type = 'm'  
              THEN joining_date, birth_date ASC;
              WHEN employee_type = 'd' 
              THEN joining_date, birth_date  DESC; 

最佳答案

好吧,经过一番研究,我得到了答案。

我们可以有条件地在 where 子句中添加多列,如下所示:

ORDER BY DECODE(employee_type, 'm', joining_date, birth_date, salary) ASC,
         DECODE(employee_type, 'd', joining_date, birth_date, salary) DESC

这将根据employee_type 对结果进行排序。

关于sql - sql中的条件order by子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14597695/

相关文章:

java - 如何在 Tomcat 7.0.47 启动时注册 oracle jdbc 驱动程序?

mysql - 表格设计建议

sql - 在 SQL Server 2008 中执行空集时强制 SVG 返回 0 而不是 NULL

java - 使用自定义类 Spring Boot Java 的 @Query 注解

sql - 在 Oracle 中执行存储过程

ROracle 不处理 Unicode

database - 11g R2 之后支持 Oracle Streams

mysql - 如何通过具有多个可搜索列的 MySQL DB 进行有效搜索?

sql - SQL中如何根据范围对记录进行分组

oracle - 在 Oracle 上的 PL/SQL 中使用行类型变量合并?