使用的数据库 - Oracle
create table customer_exercise(
customer_id number,
exercise_id number,
cnt number,
exercise_date date)
表格数据
1000 10 3 17-DEC-15
1001 20 6 19-DEC-15
1000 20 2 20-DEC-15
1003 20 9 20-DEC-15
1000 20 6 22-DEC-15
1000 30 10 23-DEC-15
1001 10 25 10-DEC-15
是否可以使用sql获取结果,使得exercise_id 20的sum(cnt)首先出现在结果集中?
select customer_id , exercise_id, sum(cnt) from customer_exercise
where customer_id in (1000, 1001, 1003) and exercise_id in (20)
group by customer_id, exercise_id order by sum(cnt)
1001 20 6
1000 20 8
1003 20 9
select customer_id , exercise_id, sum(cnt) from customer_exercise
where customer_id in (1000, 1001, 1003) and exercise_id not in (20)
group by customer_id, exercise_id order by sum(cnt)
1000 10 3
1000 30 10
1001 10 25
我要做的是将上述两个查询的结果与一个sql合并。是否可以编写一个sql来获取结果集,如下所示?
1001 20 6
1000 20 8
1003 20 9
1000 10 3
1000 30 10
1001 10 25
答案 0 :(得分:1)
我认为那会是:
select customer_id , exercise_id, sum(cnt)
from customer_exercise
where customer_id in (1000, 1001, 1003)
group by customer_id, exercise_id
order by (case when exercise_id in (20) then 1 else 2 end), sum(cnt)