Ich versuche, Spaltenwerte aus einer Tabelle in eine Zeichenfolge mit einer Variablen zurückzugeben.SQL Server 2012 Erstellen von Zeichenfolge von Werten aus einer Tabelle
DECLARE @SCRIPT NVARCHAR(MAX)
DECLARE @START_T_DATE VARCHAR(30)
DECLARE @END_T_DATE VARCHAR(30)
DECLARE @col NVARCHAR(MAX)
SET @START_T_DATE = '1 Feb 2017'
SET @END_T_DATE = '1 Apr 2017'
SET @SCRIPT = "SET NOCOUNT ON
SELECT
'['+CONVERT(VARCHAR(4), DATEPART(yyyy, DATE))+'_'+CONVERT(VARCHAR(2), DATEPART(mm, DATE))+'],' AS YEAR_MONTH
INTO ##YEAR_MONTH
FROM " + @database +"statement_runs (NOLOCK)
WHERE stmt_date >= '"+ @START_T_DATE+"'
AND stmt_date < '"+ @END_T_DATE+"'
GROUP BY '['+CONVERT(VARCHAR(4), DATEPART(yyyy, DATE))+'_'+CONVERT(VARCHAR(2), DATEPART(mm, DATE))+'],'"
Welche der folgenden
YEAR_MONTH
----------
[2017_2],
[2017_3],
ich dann in einer Schleife in dieser Tabelle durch die Ergebnisse wollen zurück und zurück in die Variable @col
die folgende Zeichenfolge, das Komma aus dem letzten Wert zu entfernen.
@col = ('[2017_2],[2017_3]')
Also, was ich versucht habe, ist Looping, indem geprüft wird, ob ein Wert in der ##YEAR_MONTH
Tabelle, aber die Schleife nicht zu stoppen ...
WHILE EXISTS (SELECT 1
FROM ##YEAR_MONTH)
BEGIN
SET @COL = '(' SELECT YEAR_MONTH
FROM ##YEAR_MONTH
END
YEAR_MONTH
----------
[2017_2],
[2017_3],
Ich habe auch versucht, diese , aber gibt nur einen Wert zurück
SET @COL = '('''+YEAR_MONTH+''')'
FROM ##YEAR_MONTH
('[2017_3],')
Hoffe, dass jemand mich in die richtige Richtung zeigen kann.
Dank
SELECT @COL + = ... 'statt' SET @COL = 'und' STUFF (@COL, LEN (@COL) - 1, 1 ' ")". Wenn das Komma am Anfang und nicht am Ende steht, wird das Entfernen des führenden Kommas so einfach wie 'STUFF (@COL, 1, 1, '')'. Abgesehen davon kann Ihre gesamte Anfrage wahrscheinlich vereinfacht werden. – ZLK
Hallo, danke, dass du mich in die richtige Richtung gelenkt hast ... Ich habe folgendes versucht und es scheint zu tun, was ich will. SET SELECT @COL = '(' '' + STUFF ((SELECT '' + [year_month] \t \t \t FROM ## YEAR_MONTH \t \t \t ORDER BY [year_month] \t \t \t FOR XML PATH ('')), 1, 1, '') + '' ')' AS [Ausgabe] – HL8