giantsover Ответов: 1

Объединение нескольких строк в один столбец для уникального пользователя


Привет Фолькс,

Мне нужна помощь здесь, в этом деле.

У меня есть эта структура, содержащая несколько записей для пользователя.
USERID   CITY         CITY_ID    TYPE
1	     London	      6	         1
1	     Liverpool    2	         2


Based on the type of 2 fields need to be populated 

When type = 1: STOREDID should be populated
When type = 2: OUTLETID should be populated

The final output should look like the following:

USERID | STORE_ID  | OUTLETID
1      | 6         | 2


СОЗДАТЬ ТАБЛИЦУ TMP_USERS_TOUCH_POINT
(
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
,USERID INT NOT NULL
,ГОРОД NVARCHAR(100) NOT NULL
,STORE_TYPE INT NOT NULL
,CITY_ID INT
)

ВСТАВИТЬ В TMP_USERS_TOUCH_POINT
ЗНАЧЕНИЯ (1,"ЛОНДОН",1,6)
,(2,"Ливерпуль",1,2)


Как я могу достичь такого результата?


Спасибо за вашу помощь заранее..

Что я уже пробовал:

С помощью стержня, но не удалось

hari19113

Если ваши данные неверны, они не соответствуют вопросу и значениям.

1 Ответов

Рейтинг:
7

hari19113

Следующий код работает с нижеприведенными данными.

ID	USERID	CITY	         STORE_TYPE	  CITY_ID
1	1	    LONDON	         1	          6
2	1	    LIVERPOOL        2	          2


  SELECT	A.USERID		, 			
			MAX(CASE WHEN A.STORE_TYPE = 1 
					 THEN A.CITY_ID END) AS STORE_ID,
			MAX(CASE WHEN A.STORE_TYPE = 2 
					 THEN A.CITY_ID END) AS OUTLETID
	FROM	TMP_USERS_TOUCH_POINT A
GROUP BY	A.USERID


Выход:
USERID	  STORE_ID	OUTLETID
1	      6	        2


Надеюсь, это вам поможет.