Maison > base de données > tutoriel mysql > Comment transposer des lignes en colonnes dans SQL Server ?

Comment transposer des lignes en colonnes dans SQL Server ?

Linda Hamilton
Libérer: 2025-01-05 02:02:41
original
932 Les gens l'ont consulté

How to Transpose Rows to Columns in SQL Server?

Transposition de lignes en colonnes dans SQL Server

Lorsque vous travaillez avec des données tabulaires, la transposition de lignes en colonnes peut être une transformation utile. Dans SQL Server, il existe plusieurs approches pour accomplir cette tâche, en fonction des exigences spécifiques.

Agrégation conditionnelle

Une méthode consiste à utiliser l'agrégation conditionnelle. Cette approche convient lorsque le nombre de colonnes est connu à l’avance. En utilisant des instructions CASE imbriquées, vous pouvez spécifier la valeur à récupérer pour chaque colonne en fonction d'une condition spécifique. La requête ci-dessous illustre l'agrégation conditionnelle :

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
Copier après la connexion

Opérateur PIVOT

Une autre option consiste à utiliser l'opérateur PIVOT. Cet opérateur vous permet de faire pivoter les lignes en colonnes en fonction des valeurs clés. La requête suivante utilise PIVOT pour transposer les lignes :

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
Copier après la connexion

SQL dynamique

Si le nombre de colonnes n'est pas fixe ou est déterminé dynamiquement, vous pouvez tirer parti de la dynamique SQL. Cette approche implique la construction d'une chaîne de requête SQL basée sur les valeurs TagID disponibles et son exécution dynamique. Le code ci-dessous fournit un exemple :

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)
Copier après la connexion

Ces techniques proposent différentes manières de transposer des lignes en colonnes dans SQL Server. L'approche la plus adaptée dépend de la nature des données et des exigences spécifiques de la tâche.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal