根据列值升序和降序

时间:2016-01-19 10:29:38

标签: sql

我有一个dat <- c(dat, toupper(dat), tolower(dat)) microbenchmark(rcpp=char_ct_unique(dat), r=r_char_ct_unique(dat), fr=f_r_char_ct_unique(dat), times=1000) ## Unit: microseconds ## expr min lq mean median uq max neval ## rcpp 218.299 284.143 331.319 332.281 358.1215 696.907 1000 ## r 1266.976 1442.460 1720.320 1494.167 1634.7870 5896.685 1000 ## fr 1260.027 1444.298 1769.664 1501.416 1652.8895 78457.729 1000 表,其中包含EMPLOYEEEMP_IDNAME

我想将奇数DEPARTMENT_ID的所有记录命名为DEPARTMENT_ID,将ASC命名为DEPARTMENT_ID

可以吗?

谢谢

3 个答案:

答案 0 :(得分:4)

您可以在CASE中使用ORDER BY,相应地更改符号:

...
ORDER BY CASE WHEN DEPARTMENT_ID  % 2 = 0
         THEN -DEPARTMENT_ID   
         ELSE  DEPARTMENT_ID END ASC;

答案 1 :(得分:1)

进行两次查询,首先是一次过滤赔率,第二次是第二次。按照您的意愿排序,然后按联盟查询。

SELECT e.* FROM (SELECT *
FROM EMPLOYEE
WHERE MOD(DEPARTMENT_ID, 2) = 1
ORDER BY DEPARTMENT_ID ASC) e
UNION ALL
SELECT e1.* FROM (SELECT *
FROM EMPLOYEE
WHERE MOD(DEPARTMENT_ID, 2) = 0
ORDER BY DEPARTMENT_ID DESC) e1

答案 2 :(得分:1)

试试这个

SELECT *
FROM EMPLOYEE
ORDER BY CASE WHEN DEPARTMENT_ID % 2 = 1 then 1 else 2 end,DEPARTMENT_ID