Émulation d'UNPIVOT dans Access 2010
MS SQL Server 2005 prend en charge la fonction UNPIVOT, mais pas Access 2010. Comment utiliser les propres fonctions d'Access pour obtenir des effets similaires ? Par exemple, disons que nous avons une table :
<code><h2>ID | A | B | C | Key 1 | Key 2 | Key 3</h2><p>1 | x | y | z | 3 | 199 | 452<br></br>2 | x | y | z | 57 | 234 | 452<br></br></p></code>
Nous voulons convertir ceci en :
<code><h2>ID | A | B | C | Key</h2><p>1 | x | y | z | 3<br></br>2 | x | y | z | 57<br></br>1 | x | y | z | 199<br></br>2 | x | y | z | 234<br></br>2 | x | y | z | 452<br></br></p></code>
Où Key 452 est une valeur répétée. Actuellement, je convertis en OLEDB/ATL C. Bien que ce soit assez rapide, je suis toujours curieux de savoir comment le faire plus efficacement dans Access 2010. Quelle est l’instruction SQL la plus efficace ?
Solution :
Vous pouvez utiliser la requête SQL suivante :
SELECT ID, A, B, C, [Key 1] AS key_field FROM tblUnpivotSource UNION ALL SELECT ID, A, B, C, [Key 2] AS key_field FROM tblUnpivotSource UNION ALL SELECT ID, A, B, C, [Key 3] AS key_field FROM tblUnpivotSource;
...Après avoir exécuté cette requête (en supposant que votre exemple de table s'appelle tblUnpivotSource), vous obtiendrez l'ensemble de résultats suivant :
<code><br></br>ID | A | B | C | key_field<hr></hr><p>1 | x | y | z | 3<br></br>2 | x | y | z | 57<br></br>1 | x | y | z | 199<br></br>2 | x | y | z | 234<br></br>1 | x | y | z | 452<br></br>2 | x | y | z | 452<br></br></p></code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!