J'attaché captures d'écran si mon texte ne s'aligne pas: Undesired Results.Comment insérer une colonne de chaînes dans un champ par identifiant unique?
J'ai une table avec une client_id et plusieurs lignes de médicaments. Je veux insérer tous les médicaments par client dans un seul champ délimité par des virgules.
Ma table ressemble à ceci:
===================
|Client__ID|DESC |
|==========|=======|
|500011 |Plavix |
|----------|-------|
|500011 |Zocor |
|----------|-------|
|500011 |aspirin|
|----------|-------|
|500006 |aspirin|
|----------|-------|
|500006 |Plavix |
|----------|-------|
|500006 |Zocor |
|----------|-------|
===================
Ma sortie désirée ressemble à ceci:
========================================
|Client__ID|DESC |MEDS_COMB |
|==========|=======|====================|
|500011 |aspirin|Plavix,Zocor,aspirin|
|----------|-------|--------------------|
|500006 |aspirin|Plavix,Zocor,aspirin|
|----------|-------|--------------------|
========================================
Mes résultats réels ressemblent à ceci:
========================================
|Client__ID|DESC |MEDS_COMB |
|==========|=======|====================|
|500011 |aspirin|NULL |
|----------|-------|--------------------|
|500006 |aspirin|NULL |
|----------|-------|--------------------|
========================================
C'est la requête I 'ai écrit jusqu'ici:
SELECT [CLIENT_ID]
, [DESC]
, (STUFF((SELECT CAST(',' + [DESC] AS VARCHAR(MAX))
FROM [AZCLMED]
WHERE (CLIENT_ID = [AZCLMED].CLIENT_ID) AND END_DATE IS NULL
FOR XML PATH ('')), 1, 2, '')) AS MEDS_COMB
FROM [AZCLMED]
ORDER BY [CLIENT_ID] ASC
Le tableau et les résultats que j'ai publiés n'étaient qu'un exemple des données. Il y a 100 000 enregistrements dans ma table actuelle. Votre requête a bien fonctionné. Comment puis-je l'appliquer à une table beaucoup plus grande? – Chris
La requête doit être identique sur toutes les tables avec les colonnes sélectionnées. Tout ce qui est de 'SUBSTRING (' '' 'MEDS_COMB') est ce qui devrait vous intéresser le plus, semble-t-il: – 3BK
Y a-t-il une logique spéciale à la façon dont vous voulez formulé des lignes? Comme je le disais, le' MIN() 'semble un peu arbitraire Si vous voulez que je donne une réponse plus détaillée que ce que j'ai déjà, je vais avoir besoin d'un peu plus d'informations sur les données réelles que vous avez/veulent: – 3BK