Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

afficher les 3 premiers enregistrements dans une virgule séparés dans une colonne

Je suppose que les "trois premiers" sont les trois éléments les plus fréquents dans la colonne Expertise, mais cela peut être modifié si ce n'est pas ce que vous vouliez dire.

WITH T1 AS (
    SELECT TOP(3) Expertise, COUNT(*) AS cnt
    FROM Expertise
    GROUP BY Expertise
    ORDER BY cnt DESC
), T2 AS (
   SELECT ROW_NUMBER() OVER (ORDER BY cnt DESC) AS rn, Expertise
   FROM T1
)
SELECT (SELECT Expertise FROM T2 WHERE rn = 1) + ',' + 
       (SELECT Expertise FROM T2 WHERE rn = 2) + ',' +
       (SELECT Expertise FROM T2 WHERE rn = 3)

Résultat :

dfdf,.NEt,fgfg