2017-07-28 8 views
1

DB verwendet - OracleSql Ergebnisse von Summe zu bestellen

create table customer_exercise(
customer_id number, 
exercise_id number, 
cnt number, 
exercise_date date) 

Tabellendaten

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 

Ist es möglich, Ergebnisse zu erhalten sql, so dass Summe (cnt) für exercise_id 20 zuerst in das erscheint Ergebnismenge?

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 

Was ich versuche zu tun, um die Ergebnisse von über zwei Abfragen mit einer SQL-fusionieren. Ist es möglich, eine einzelne SQL-Datei zu schreiben, die die Ergebnismenge wie folgt abruft?

1001 20 6 
1000 20 8 
1003 20 9 
1000 10 3 
1000 30 10 
1001 10 25 

Antwort

1

denke ich, dass sein würde:

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) 
+0

Ihnen sehr danken. – rayne