Je n'ai pas beaucoup d'expérience avec SQL à part des requêtes de CRUD; S'il vous plaît, pardonnez-moi si cela est trivial. J'essaie de rejoindre deux tables et de créer une colonne supplémentaire dans les résultats avec une série de valeurs séparées de virgule.
Tableau 1 STROND> P> Je peux obtenir le Valeurs séparées des virgules du tableau 2 en utilisant p> Je ne peux pas comprendre comment Joignez-vous aux tables ensemble sur le Typeid code> pour contenir un ensemble de résultats contenant la colonne de matérielsRreguiired code>. p> p> p>
3 Réponses :
Sous la version SQL Server 2016, vous pouvez utiliser un chemin XML sur le groupe par chaîne Concat sur la version SQL Server 2016, vous pouvez utiliser string_agg (transact-sql) - SQL Server | Microsoft Docs P> P> string_agg code>. p>.
Vous pouvez rejoindre, agréger et utiliser la fonction globale string_agg () code> pour générer la liste séparée des virgules. Cette fonction est disponible depuis SQL Server 2017. select
t1.typeID,
t1.activityID,
t1.activityName,
t.Blueprint,
t1.productTypeID,
t1.ProductName,
string_agg(t2.materialTypeID, ',')
within group (order by t2.materialTypeID) materialTypeIDs
from
table1 t1
inner join table2 t2
on t2.typeID = t1.typeID
and t2.activityID = t1.activityID
group by
t1.typeID,
t1.activityID,
t1.activityName,
t.Blueprint,
t1.productTypeID,
t1.ProductName
En tant que note, quelle que soit l'approche, vous pouvez trouver une sous-requête corrélée plus simple qu'une grosse agrégation: ou: p> Table2 (typeid, activité) code>. P> p>
Merci Gordon. Je vais essayer votre Apporach aussi.