Tuesday, 18 October 2011

MULTIPLE ROWS IN ONE COLUMN TO SINGLE ROWS WITH COMMA SEPARATION

CREATE TABLE TESTCOLROWS (ID INT IDENTITY(1,1), NAME VARCHAR(10))
GO
GO
INSERT INTO TESTCOLROWS (NAME) VALUES ('TEST1')
INSERT INTO TESTCOLROWS (NAME) VALUES ('TEST2')
INSERT INTO TESTCOLROWS (NAME) VALUES ('TEST3')
INSERT INTO TESTCOLROWS (NAME) VALUES ('TEST4')
INSERT INTO TESTCOLROWS (NAME) VALUES ('TEST5')
INSERT INTO TESTCOLROWS (NAME) VALUES ('TEST6')
INSERT INTO TESTCOLROWS (NAME) VALUES ('')
INSERT INTO TESTCOLROWS (NAME) VALUES ('TEST7')
INSERT INTO TESTCOLROWS (NAME) VALUES (NULL)
GO
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' , '') + ISNULL(NAME,'')
FROM TESTCOLROWS
SELECT @listStr
GO
DECLARE @listStr VARCHAR(MAX)
SET @listStr = ''
SELECT @listStr = @listStr + NAME + ','
FROM TESTCOLROWS
SELECT SUBSTRING(@listStr , 1, LEN(@listStr)-1)
GO
CREATE FUNCTION [dbo].[UDF_DOCUMENTIDCHILD] ( @ID INT )
RETURNS VARCHAR(100)
AS BEGIN
--DECLARE @ID INT
DECLARE @listStr VARCHAR(100)
SELECT @listStr = COALESCE(@listStr+',' , '') + ISNULL(NAME,'')
FROM TESTCOLROWS WHERE ID=@ID;
RETURN @listStr
END
GO
SELECT DBO.[UDF_DOCUMENTIDCHILD] (2) AS NAME

No comments:

Post a Comment