2011-09-13 3 views
2

J'ai une table avec deux colonnes. Nous appellerons la table Table1 et les colonnes Col1 et Col2 qui sont les deux colonnes de texte.SQL: Comment trier des lignes sur deux colonnes mais en utilisant des conditions sur ces colonnes

Certaines lignes auront des données dans Col1 tandis que Col2 sera null. Ensuite, il y a des lignes où Col1 sera nul et Col2 aura des données. Et enfin, certaines lignes auront des données dans les deux. Aucune ligne n'existe où les deux colonnes sont null.

Je souhaite lire toutes les lignes mais le tri doit être le suivant: Si Col1 contient des données, cette colonne est utilisée, quelle que soit la colonne Col2. Si Col1 est nul, il utilise Col2.

Je ne suis même pas sûr que la génération par tri est même possible. Merci pour toute aide.

+0

Comment les lignes de données col1 doivent-elles être triées par rapport aux lignes de données col2? Avant ou après? Vous ne pouvez pas trier toutes les lignes par la condition d'une seule ligne, car des lignes différentes auront des conditions différentes. – mellamokb

+0

Vous pouvez trier les lignes comme John Weber et Lcarus l'ont signalé. – Polaris431

+0

En effet. Je pense que j'ai mal lu votre message la première fois que j'ai parcouru .. Heureux que vous avez une solution! :) – mellamokb

Répondre

2
.... 
order by 
case when Col1 is not null then Col1 
when Col1 is null then Col2 
end 
+0

Wow. Je suis impressionné. Merci un million! – Polaris431

3

Il existe plusieurs façons de le faire. En voici un:

order by coalesce(col1, col2) 
+0

Cela fonctionne également. Je vous remercie. Toute idée de savoir s'il existe une différence de performance par rapport à la solution de Lcarus? – Polaris431

+0

Je ne sais pas, mais cela pourrait être testé. –

Questions connexes