2009-06-30 11 views
1

je le recordset suivant:Groupe enregistre et mettre les résultats dans le champ unique

ID  AssetName 
882  Training Room VCR 
882  Training Room DVD 
882  Training Room TV 
858  Training Room VCR 
858  Training Room Computer 
858  Training Room TV 

Je veux groupe chaque ID et obtenir un resultset en tant que tel:

ID  Assets 
882  Training Room VCR<br/>Training Room DVD<br/>Training Room TV 
858  Training Room VCR<br/>Training Room Computer<br/>Training Room TV 

Y at-il un moyen de construire une instruction SQL 2005 qui va le faire?


double question

How to return multiple values in one column (T-SQL)?

Répondre

1

Je recommande de garder la logique d'ajouter les < br/> éléments dans votre code côté serveur, pas la requête SQL. Gardez votre SQL concentré sur le retour du jeu de résultats et utilisez des boucles dans votre code pour comprendre comment le présenter comme ça. Une première tentative peut impliquer une boucle basée sur une requête avec une autre boucle basée sur une requête à l'intérieur, mais cela entraînera un bombardement de requêtes sur votre base de données. Il est préférable d'utiliser un seul grand résultat de requête et d'avoir des branches logiques pour la sortie conditionnelle. Modifiez votre requête à faciliter la sortie désirée, ne pas le créer. Par exemple, vous pouvez commander les données afin de savoir que vous obtiendrez tous les actifs d'un ID avant de passer au suivant.

1

Vous obtiendrez ce dont vous avez besoin.

SELECT DISTINCT 
    [ID] 
    ,CONVERT(VARCHAR(MAX), 
    ( SELECT [AssetName] [div] 
     FROM [dbo].[tableName] t1 
     WHERE t1.[ID] = t.[ID] FOR XML PATH('') 
    )) [asset] 
FROM [dbo].[tableName] t 
+0

Cela donne les enregistrements dans ce format:

Smart Board
In conference room 434
VCR/DVD player in conference room 434

+0

Ensuite, essayez ce SELECT DISTINCT [ID] , REPLACE (CONVERT (VARCHAR (MAX), (SELECT [assetname] + ' XXX ' FROM [dbo]. [NomTable] t1 OERE t1. [ID] = t. [ID] POUR CHEMIN XML (' ') )),' XXX ','
') [ressource] DE [ dbo]. [nomTable] t – Slim

Questions connexes