Concatenazione risultati in una singola cella con STRING AGG

Da Webmobili Wiki.
Versione del 28 lug 2025 alle 07:54 di SimoneVincenzi (discussione | contributi)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Per mostrare un elenco di risorse collegate ad una singola row, separate da un carattere separatore, basta utilizzare STRING_AGG().

ES.
Questa query estrae le occasioni del negozio 44334.

Per ogni riga, nel campo Immagini stampa l'elenco delle immagini del prodotto separate da spazio.

SELECT 
	Product.ID AS ProductId
	,Product.[Name] AS ProductName
	,Pictures.Immagini
FROM ProductBargain
	INNER JOIN Product ON ProductBargain.ProductId = Product.ID
	LEFT OUTER JOIN Picture ON Product.PictureId = Picture.ID 
	OUTER APPLY(
		SELECT Product.ID AS ProductID,
			STRING_AGG('https://immagini.designbest.com/pictures/' +Picture.EntityValue + '-'+CAST(EntityId AS VARCHAR(10))+'-'+CAST(ID AS VARCHAR(10))+'.jpg', ' ') AS Immagini
		FROM Picture
		WHERE EntityId = Product.ID AND EntityGroup = 'Product' AND EntityKey = 'gallery'
	) AS Pictures
WHERE ProductBargain.ShopPointID = 44334
ORDER BY ProductBargain.DisplayOrder, Product.LastUpdate DESC

OUTER APPLY può utilizzare tabelle definite in precedenza senza che siano presenti nel FROM
in questo caso utilizza Product nella SELECT