"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment convertir efficacement les colonnes en lignes dans SQL Server?

Comment convertir efficacement les colonnes en lignes dans SQL Server?

Publié le 2025-04-13
Parcourir:639

How Can I Efficiently Convert Columns to Rows in SQL Server?

Guide en profondeur de la conversion de la colonne dans SQL Server

Lors du traitement des tables contenant un grand nombre de colonnes métriques, la conversion de ces colonnes en lignes est très bénéfique à des fins d'analyse et de déclaration. Cette transformation implique de reconstruire les données pour créer de nouvelles tables avec différents schémas.

instruction Problème

Considérez la structure de table suivante:

[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]

Le but est de convertir ces colonnes métriques en lignes, créant ainsi une nouvelle table avec le schéma suivant:

[ID] [EntityId] [IndicatorName] [IndicatorValue]
]

Solution à l'aide de Univot

Une solution élégante pour accomplir cette tâche consiste à profiter de la fonction Univot. La syntaxe de Univot est la suivante:

UNPIVOT ([unpivot column] FOR [pivot column] IN ([pivot values]))

Dans cet exemple, la colonne Univot représente la valeur de l'indicateur (par exemple, "Indicator1", "Indicator2, etc.), et la colonne Pivot représente le nom de la colonne lui-même. La requête suivante illustre comment utiliser Univot:

select id, entityId,
  indicatorname,
  indicatorvalue
from yourtable
unpivot
(
  indicatorvalue
  for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;

En effectuant cette requête, la colonne métrique sera convertie en lignes et le nom et la valeur métriques seront remplis avec la nouvelle colonne.

alternatives

En plus de Univot, il existe d'autres façons de convertir les colonnes en lignes:

  • Cross s'appliquez à l'aide de l'Union All: Cette méthode implique d'utiliser Cross Apply and Union tout pour spécifier explicitement chaque nom et valeur métrique.
  • Cross s'appliquez à l'aide de valeurs: est similaire à la méthode ci-dessus, mais la clause de valeurs est utilisée dans Cross Apply.
  • dynamique sql: Pour les situations avec un grand nombre de colonnes d'indicateur, vous pouvez utiliser Dynamic SQL pour générer automatiquement des instructions de requête.

Le choix d'une solution dépend des besoins spécifiques et de la version de SQL Server utilisée.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3