Getting Started with Adobe After Effects - Part 6: Motion Blur


Upload Image Close it
Select File

This challenge has been seen in one of the SQL Server forums. The challenge is all about merging the data based on certain conditions.

TSQL Beginners Challenge 4 - Concatenating values from multiple rows

Solution to TSQL Beginners Challenge4

Apr 9 2010 5:13AM by CAReitan   

Solution to TSQL Beginners Challenge4

DECLARE @t TABLE(
	ID INT,
	NAME VARCHAR(MAX)
)

INSERT INTO @t (ID,[NAME]) SELECT 1, 'Deepak Kumar Goyal'
INSERT INTO @t (ID,[NAME]) SELECT 2, 'Niladri Biswas'
INSERT INTO @t (ID,[NAME]) SELECT 2, 'Priyanka Sarkar'
INSERT INTO @t (ID,[NAME]) SELECT 3, 'Sumi Girijan'
INSERT INTO @t (ID,[NAME]) SELECT 3, 'Suresh Beldar'
INSERT INTO @t (ID,[NAME]) SELECT 3, 'Jeeva Baby';

WITH X (ID, [NAME], List, CNT, LEV, RN)
AS (
SELECT T.ID,
		T.[NAME],
		CAST(T.[NAME] AS varchar(2000)) AS List,
		CAST(COUNT(T.ID) OVER(PARTITION BY T.ID) AS INT) AS CNT,
		1 AS LEV,
		T.RN
FROM 
	(
		SELECT ID,
			[NAME],
			ROW_NUMBER() OVER(PARTITION BY ID ORDER BY [NAME]) AS RN
		FROM @t
	) T

UNION ALL

SELECT TOP 100 PERCENT
		X.ID,
		X.[NAME],
		CASE WHEN CHARINDEX(e.[NAME],X.List)=0 THEN CAST(X.List + ';' + e.[NAME] AS varchar(2000))
		ELSE '' END,
		X.CNT,
		X.LEV+1,
		e.RN
FROM
	(
		SELECT ID,
			[NAME],
			ROW_NUMBER() OVER(PARTITION BY ID ORDER BY [NAME]) AS RN
		FROM @t
	) e,X
WHERE (e.ID=X.ID) AND e.RN>X.RN
)
SELECT 
	ID, 
	CASE WHEN (LEN(List)-LEN(REPLACE(List,';',''))=1) THEN REPLACE(List,';',' AND ') 
	WHEN (LEN(List)-LEN(REPLACE(List,';',''))>=2) THEN REPLACE(List,';',' OR ')
	ELSE List END AS [NAME]
FROM X
WHERE CNT = RN AND LEV=RN AND CNT=LEV AND (LEN(List)-LEN(REPLACE(List,';',''))+1=CNT) 
ORDER BY ID, LEN([List]) DESC;

Tags:


CAReitan
909 · 0% · 30
0
Liked



Submit

Your Comment


Sign Up or Login to post a comment.

    Copyright © Rivera Informatic Private Ltd Contact us      Privacy Policy      Terms of use      Report Abuse      Advertising      [ZULU1097]