Maison >base de données >tutoriel mysql >Comment puis-je transposer efficacement des lignes en colonnes dans SQL Server ?
La transposition de lignes en colonnes dans SQL Server est une tâche courante lorsque vous travaillez avec des données stockées sous forme de tableau. Traditionnellement, cela était réalisé à l’aide de curseurs, ce qui peut prendre du temps et être inefficace. Cet article explore des méthodes alternatives de transposition de lignes, offrant des solutions à la fois élégantes et performantes.
Une approche consiste à utiliser l'agrégation conditionnelle, qui exploite la fonction COALESCE() pour gérer les éléments manquants. valeurs.
SELECT TimeSeconds, COALESCE(MAX(CASE WHEN TagID = 'A1' THEN Value END), 'n/a') A1, COALESCE(MAX(CASE WHEN TagID = 'A2' THEN Value END), 'n/a') A2, COALESCE(MAX(CASE WHEN TagID = 'A3' THEN Value END), 'n/a') A3, COALESCE(MAX(CASE WHEN TagID = 'A4' THEN Value END), 'n/a') A4 FROM table1 GROUP BY TimeSeconds
Cette requête génère une sortie avec des valeurs d'espace réservé (« n/a ») pour les valeurs manquantes. data.
Une autre option consiste à utiliser la fonction PIVOT, qui permet la création de colonnes dynamiques.
SELECT TimeSeconds, A1, A2, A3, A4 FROM ( SELECT TimeSeconds, TagID, Value FROM table1 ) s PIVOT ( MAX(Value) FOR TagID IN (A1, A2, A3, A4) ) p
Cette approche génère une sortie avec des valeurs NULL pour les données manquantes. .
Si le nombre de colonnes n'est pas fixe et doit être déterminé dynamiquement, du SQL dynamique peut être utilisé.
DECLARE @cols NVARCHAR(MAX), @sql NVARCHAR(MAX) SET @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(TagID) FROM Table1 ORDER BY 1 FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)'),1,1,'') SET @sql = 'SELECT TimeSeconds, ' + @cols + ' FROM ( SELECT TimeSeconds, TagID, Value FROM table1 ) s PIVOT ( MAX(Value) FOR TagID IN (' + @cols + ') ) p' EXECUTE(@sql)
Cette requête construit l'instruction PIVOT dynamique en fonction des valeurs TagID uniques dans la table.
Ces méthodes fournissent des solutions efficaces et personnalisables pour transposer des lignes en colonnes. dans SQL Server. En sélectionnant l'approche appropriée en fonction des caractéristiques des données et des exigences de performances, vous pouvez simplifier les tâches de manipulation des données et améliorer l'efficacité de l'exécution des requêtes.
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!