Sélectionnez des valeurs de plusieurs colonnes dans une seule colonne

J'ai une table dans une base de données qui a 9 colonnes contenant le même type de données, ces valeurs sont autorisés à être null. J'ai besoin de sélectionner chacune des valeurs non null dans une colonne unique de valeurs qui ne se soucie pas de l'identité de la ligne à partir de laquelle ils sont issus.

Donc, pour une table qui ressemble à ceci:

+---------+------+--------+------+
|   Id    | I1   | I2     | I3   | 
+---------+------+--------+------+
|    1    | x1   | x2     |  x7  |
|    2    | x3   | null   |  x8  |
|    3    | null | null   |  null|
|    4    | x4   | x5     |  null|
|    5    | null | x6     |  x9  |
+---------+------+--------+------+

Je souhaite sélectionner chacune des valeurs préfixées avec x dans une seule colonne. Mes données qui en résultent devraient ressembler le tableau suivant. La commande doit être préservé de sorte que la première valeur de la colonne de la première ligne devrait être en haut et la dernière valeur de la colonne de la dernière ligne en bas:

+-------+
| value |
+-------+
|  x1   |
|  x2   |
|  x7   |
|  x3   |
|  x8   |
|  x4   |
|  x5   |
|  x6   |
|  x9   |
+-------+

Je suis en utilisant SQL Server 2008 R2. Est-il une meilleure technique pour la réalisation de ce que la sélection de la valeur de chaque colonne, à son tour, à partir de chaque ligne, et en insérant les valeurs non null dans les résultats?

source d'informationauteur Jason