2013-04-04 5 views
0

J'ai une table comme celui-cilignes de commande basé sur une séquence

ID Subject  StatusCd  Date 
------------------------------------------ 
1 abc   3   01/03/2013 
2 def   1   01/03/2013 
3 ghi   2   05/03/2013 
4 jkl   3   02/03/2013 
5 mno   3   06/03/2013 

Comment puis-je écrire une requête SQL qui commande des lignes dans cette séquence de StatusCd (3, 1, 2). Aussi je veux trier chaque rangée dans un groupe basé sur son Date.

+0

grâce techdo, j'a consisté à trouver comment le faire. –

+1

Dans l'en-tête de formatage, placez la partie de code à l'intérieur de '{}' pour mettre en surbrillance. – TechDo

Répondre

3

Vous pouvez utiliser une expression CASE la clause ORDER BY:

select id, subject, statuscd, date 
from yt 
order by 
    case statuscd 
    when 3 then 0 
    when 1 then 1 
    when 2 then 2 
    end, date 

Voir SQL Fiddle with Demo. Cela donne un résultat:

| ID | SUBJECT | STATUSCD |  DATE | 
---------------------------------------- 
| 1 |  abc |  3 | 2013-01-03 | 
| 4 |  jkl |  3 | 2013-02-03 | 
| 5 |  mno |  3 | 2013-06-03 | 
| 2 |  def |  1 | 2013-01-03 | 
| 3 |  ghi |  2 | 2013-05-03 | 
+0

Peut-on ajouter une clause where à l'instruction ci-dessus? –

+0

@SujithKp Oui, vous pouvez mettre une clause where avant la commande par. – Taryn

2

S'il vous plaît essayer:

select 
    ID, 
    [Subject], 
    StatusCd, 
    [Date] 
from 
    YourTable 
order by case StatusCd when 3 then 0 else StatusCd end, 
    [date] 
Questions connexes