TSQL ORDER-BY avec UNION de jeux de données disparates

J'ai une question que les Syndicats deux un peu similaire ensembles de données, mais ils ont tous deux des colonnes qui ne sont pas présents dans les autres -- c'est à dire les colonnes ont des valeurs NULL dans le résultat de l'UNION. Le but de l'UNION est d'obtenir les données dans un format convivial pour le logiciel côté.

Le problème c'est que j'ai besoin d'ORDONNER les données obtenues en utilisant les colonnes qui n'existent que dans l'un ou l'autre ensemble.

Par exemple: Table1 a des champs ID, le Chat, le Prix. Table2 a des champs ID (le même que dans le tableau 1), Nom, Abbrv.

Ma requête ressemble à quelque chose comme ceci:


SELECT t1.ID, t1.Cat, t1.Price, NULL as Name, NULL as Abbrv FROM t1
UNION
SELECT t2.ID, NULL as Cat, NULL as Price, t2.Name, t2.Abbrv FROM t2
ORDER BY Price DESC, Abbrv ASC

La COMMANDE PAR est là que je suis bloqué. Les données ressemble à ceci:

100---Balls-----1.53----------------------
200---Bubbles---1.24----------------------
100---------------------RedBall----101RB--
100---------------------BlueBall---102BB--
200---------------------RedWand----201RW--
200---------------------BlueWand---202BW--

Mais je veux qu'elle ressemble à ceci:

100---Balls-----1.53----------------------
100---------------------RedBall----101RB--
100---------------------BlueBall---102BB--
200---Bubbles---1.24----------------------
200---------------------RedWand----201RW--
200---------------------BlueWand---202BW--

(toutes mes excuses si ceux-ci sont difficiles à lire--ne savais pas comment faire autrement pour afficher un tableau)

Garder à l'esprit que c'est un très simplifiés exemple et la proverbiale "utiliser une JOINTURE!" réponse n'est pas applicable (c'est à dire que je sais déjà comment les REJOINDRE, mais ce n'est pas ce que je veux dans le résultat final).

Il se peut très bien que la seule façon d'y parvenir est par la manipulation des données dans le logiciel une fois qu'il est de retour à partir des données de la couche--si c'est le cas, alors ainsi soit-il. Mais j'espère que cela peut être fait en TSQL.

source d'informationauteur NateJ