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

sous-requête du serveur sql avec un jeu de résultats séparé par des virgules

Voici une astuce que j'ai utilisée dans le passé pour faire des choses similaires. Utilisez SOUS-CHAINE une fonction.

    SELECT n.nominationID
        , SUBSTRING((
                            SELECT ',' + naf.awardFocusName
                            FROM NominationAwardFocus naf
                            JOIN AwardFocus af
                                ON naf.awardFocusID = af.awardFocusID
                            WHERE n.nominationID = naf.nominationID
                            FOR XML PATH('')

                        ), 2, 1000000)
    FROM Nomination n

Notez que le 2 est utilisé pour couper la virgule de début que la sous-sélection ajoute au premier élément, et 1000000 est choisi comme un grand nombre pour signifier "tout le reste de la chaîne".