DECLARE @SID INT DECLARE @descr varchar(255) DECLARE @item varchar(255) DECLARE cDetailsCursor CURSOR READ_ONLY FOR select csg.CID from table1 csg JOIN table2 map ON map.ID = csg.ID WHERE map.SID = @SID union select cs.CID FROM table3 cs where cs.SID = @SID OPEN cDetailsCursor SET @descr = '' FETCH NEXT FROM cDetailsCursor INTO @item WHILE (@@fetch_status <> -1) BEGIN IF (@@fetch_status <> -2) BEGIN IF Len(@descr) = 0 BEGIN SET @descr = @item END ELSE BEGIN SET @descr = @descr + ', ' + @item END END FETCH NEXT FROM cDetailsCursor INTO @item END CLOSE cDetailsCursor DEALLOCATE cDetailsCursor RETURN(@descr)
SET @MyVariable = ''SELECT @MyVariable = @MyVariable + ', ' + MyColumnFROM MyTableORDER BY MyKeyColumn-- Remove leading commaSET @MyVariable = RIGHT(@MyVariable ,LEN(@MyVariable )-1)SELECT @MyVariable
WITH CTE AS(SELECT name as TableName, object_id FROM sys.tables WHERE schema_id = schema_id('dbo'))SELECT TableName, CommaList = STUFF(( SELECT ',' + c.name FROM sys.columns c WHERE c.object_id = CTE.object_id ORDER BY c.column_id FOR XML PATH(''),TYPE).value('.','varchar(max)'),1,1,'') FROM CTE ORDER BY Tablename;
DECLARE @descr VARCHAR(MAX) = '', @SID INT = 10 ;WITH CTE AS ( SELECT csg.CID FROM table1 csg JOIN table2 map ON map.PID = csg.PID WHERE map.SID = @SID UNION SELECT cs.CID FROM table3 cs WHERE cs.SID = @SID ), CTE2 AS( SELECT CommaList = STUFF(( SELECT ', ' + CONVERT(VARCHAR,c.CID) FROM CTE c ORDER BY c.ID FOR XML PATH(''),TYPE).value('.','varchar(max)'),1,2,'') FROM CTE ) SELECT @descr = CommaList FROM CTE2 GROUP BY CommaList RETURN (@descr)