Mit hilfe des folgenden SQL Script, kann eine CSV generiert werden, mit welchem alle Komponenten in eine Spalte einer Zeile zusammen gefasst werden, dadurch entsteht eine CSV, welche man per Ameise Importieren kann.

declare @quantityDelimiter varchar(1) = ';'
declare @productDelimiter varchar(1) = '|'

;
WITH x
AS
(SELECT
		a.kArtikel 'Father'
		,CONVERT(NVARCHAR(MAX), CONCAT(FORMAT(st.fAnzahl, 'g15'), @quantityDelimiter, a2.cArtNr)) 'Child'
		,r1 = ROW_NUMBER() OVER (PARTITION BY a.cArtNr ORDER BY a2.cArtNr)
	FROM tartikel a
	JOIN dbo.tStueckliste st
		ON a.kStueckliste = st.kStueckliste
	JOIN dbo.tArtikel a2
		ON st.kArtikel = a2.kArtikel
	WHERE a.kStueckliste != 0),
a
AS
(SELECT
		Father
		,@productDelimiter + Child AS 'Child'
		,r1
	FROM x
	WHERE r1 = 1),
r
AS
(SELECT
		Father
		,Child
		,r1
	FROM a
	WHERE r1 = 1
	UNION ALL
	SELECT
		x.Father
		,r.Child + @productDelimiter + x.Child
		,x.r1
	FROM x
	INNER JOIN r
		ON r.Father = x.Father
		AND x.r1 = r.r1 + 1)

SELECT
	a.cArtNr
	,ab.cName
	,t1.*
FROM (SELECT
		Father
		,'Komponente' 'FieldName'
		,STUFF(REPLACE(MAX(Child), CONCAT(@productDelimiter, '1', @quantityDelimiter), @productDelimiter), 1, 1, '') AS 'FieldValue'
	FROM r
	GROUP BY Father) t1
JOIN dbo.tArtikel a
	ON t1.Father = a.kArtikel
JOIN dbo.tSpracheUsed spu
	ON spu.nStandard = 1
JOIN dbo.tArtikelBeschreibung ab
	ON ab.kArtikel = t1.Father
		AND ab.kSprache = spu.kSprache
		AND ab.kPlattform = 1
		AND ab.kShop = 0
OPTION (MAXRECURSION 0)
  • No labels