2.6 根据数据项的键排序

2008-11-18 20:39:59 Cookbook Views(571)

2.6 根据数据项的键排序
Q: 针对某条件逻辑排序,如: job = 'SALESMAN' 按照 comm 排序,否则根据 sal 排序
A: 使用 case 表达式来动态改变如何对结果排序

select ename, sal, job, comm
from emp
order by case when job = 'SALESMAN' then comm else sal end

ename   | sal   |      job      | comm
--------+------+-----------+------
TURNER | 1500 | SALESMAN   |      0
ALLEN   | 1600 | SALESMAN   |   300
WARD    | 1250 | SALESMAN   |   500
SMITH   |   800 | CLERK       |
JAMES   |   950 | CLERK       |
ADAMS   | 1100 | CLERK       |
MILLER | 1300 | CLERK       |
MARTIN | 1250 | SALESMAN   | 1400
CLARK   | 2450 | MANAGER    |
BLAKE   | 2850 | MANAGER    |
JONES   | 2975 | MANAGER    |
SCOTT   | 3000 | ANALYST    |
FORD    | 3000 | ANALYST    |
KING    | 5000 | PRESIDENT |
(14 rows)

Tables Used:
for MySQL

  • http://www.hooto.com/home/rui/doc/archives/5089.html

for PostgreSQL

  • http://www.hooto.com/home/rui/doc/archives/5090.html

Learn:
SQL Cookbook, by Anthony Molinaro.
Copyright 2006 O'Reilly Media, Inc.

--EOF--

Tags:   SQL  DB2  MySQL  Oracle  PostgreSQL  Database  MSSQL  case

Comments

Leave a Comment

Name
Content
Verification Type the characters you see in the picture below