Maison > base de données > tutoriel mysql > Comment SQL peut-il être utilisé pour concaténer des colonnes, des données pivots et des comptes de somme pour des combinaisons uniques d'ID et de mois ?

Comment SQL peut-il être utilisé pour concaténer des colonnes, des données pivots et des comptes de somme pour des combinaisons uniques d'ID et de mois ?

DDD
Libérer: 2025-01-03 18:09:40
original
654 Les gens l'ont consulté

How can SQL be used to concatenate columns, pivot data, and sum counts for unique ID and month combinations?

Concaténation de colonnes et pivotement de données avec SQL

Problème :

Vous avez une base de données avec colonnes représentant l'ID, le type, le sous-type, le nombre et le mois. Comment pouvez-vous convertir ces données dans un nouveau format dans lequel le type et le sous-type sont concaténés dans de nouvelles colonnes et le nombre est additionné pour chaque combinaison unique d'ID et de mois ?

Solution :

Pour obtenir cette sortie transformée, vous pouvez utiliser l'opérateur PIVOT dans SQL Server 2005. L'opérateur PIVOT vous permet de transposer dynamiquement des lignes en colonnes.

L'extrait de code suivant montre comment utiliser PIVOT pour obtenir le résultat souhaité :

DECLARE @sql AS varchar(max)
DECLARE @pivot_list AS varchar(max) -- Leave NULL for COALESCE technique
DECLARE @select_list AS varchar(max) -- Leave NULL for COALESCE technique

SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + PIVOT_CODE + ']'
        ,@select_list = COALESCE(@select_list + ', ', '') + 'ISNULL([' + PIVOT_CODE + '], 0) AS [' + PIVOT_CODE + ']'
FROM (
    SELECT DISTINCT [TYPE] + '_' + SUBTYPE AS PIVOT_CODE
    FROM stackoverflow_159456
) AS PIVOT_CODES

SET @sql = '
;WITH p AS (
    SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM([COUNT]) AS [COUNT]
    FROM stackoverflow_159456
    GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE
)
SELECT ID, [MONTH], ' + @select_list + '
FROM p
PIVOT (
    SUM([COUNT])
    FOR PIVOT_CODE IN (
        ' + @pivot_list + '
    )
) AS pvt
'

EXEC (@sql)
Copier après la connexion

Détails de mise en œuvre :

  1. Générer une liste pivot dynamique : Le code crée dynamiquement une liste de colonnes pivot basées sur l'unique combinaisons de type et de sous-type dans la table d'origine.
  2. Construire une requête PIVOT : La requête PIVOT principale crée d'abord une expression de table commune (CTE) nommée "p" qui regroupe les données par ID, mois, ainsi que le type et le sous-type concaténés. Il additionne ensuite le nombre pour chaque groupe.
  3. Transposition des lignes en colonnes : L'opérateur PIVOT est appliqué au CTE "p" pour transposer les lignes en colonnes. La liste des colonnes pivot est générée dynamiquement à l'aide de la variable @pivot_list.
  4. Gestion des valeurs nulles (facultatif) : En utilisant la fonction COALESCE, la condition ISNULL() dans la variable @select_list peut être utilisé pour remplacer les valeurs nulles dans les colonnes pivotées par des zéros.

L'exécution de la variable @sql renverra la table souhaitée avec colonnes concaténées et comptes additionnés. Cette solution permet une agrégation efficace et dynamique de données complexes.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal