Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 траспонирование данных в столбцы (SQL SERVER 2012)  [new]
yura_832306
Member

Откуда:
Сообщений: 1
Добрый ночи!

Допустим есть данные:

i_data= ApplicationVersionId=1.7.5|Cohort=2014‐06‐08|Country=US|CountryName=United States|DeviceId=B49C9AC6‐C33B‐49C2‐8737‐CDBDF47028C2|DeviceType=iPad|FacebookId=0|GloryLevel=33|IDFA=D8D08C05‐8B71‐4AABAE69‐0D23F4932B3B|LastLevel=3|LastLevelHouse=barracks_level_pack_4|LastLevelMode=turn_bas
ed|Locale=en|OSVersion=7.1.2|RetantionDay=315|SessionGuid=9970d9f8‐f6ad‐4c1c‐9131‐
7689b0a068f0|SessionId=5665|TotalCredits=2|TotalCreditsBuy=0|TotalCreditsFree=2|TotalEn
ergy=180|TotalExpenseCredits=758|TotalExpenseFood=1605480|


из это строки мне нужны : ApplicationVersionId , Cohort, TotalCredits в виде таблицы с их значениями

ApplicationVersionId Cohort TotalCredits

1.7.5 2014‐06‐08 2

как это реализовать на T-SQL? (sql server 2012)
Спасибо
2 мар 17, 02:37    [20256074]     Ответить | Цитировать Сообщить модератору
 Re: траспонирование данных в столбцы (SQL SERVER 2012)  [new]
Massa52
Member

Откуда:
Сообщений: 380
yura_832306,

А как они лежат в SQL?
2 мар 17, 03:24    [20256089]     Ответить | Цитировать Сообщить модератору
 Re: траспонирование данных в столбцы (SQL SERVER 2012)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31437
yura_832306
из это строки мне нужны : ApplicationVersionId , Cohort, TotalCredits в виде таблицы с их значениями

ApplicationVersionId Cohort TotalCredits

1.7.5 2014‐06‐08 2

как это реализовать на T-SQL? (sql server 2012)
Данные в строках с разделителями?
Ищите в форуме "преобразование строки в таблицу", потом разделяйте по символу "=" название параметра и его значение.
2 мар 17, 08:51    [20256212]     Ответить | Цитировать Сообщить модератору
 Re: траспонирование данных в столбцы (SQL SERVER 2012)  [new]
iiyama
Member

Откуда:
Сообщений: 642
yura_832306,

как вариант
declare @str nvarchar(max)=N'i_data= ApplicationVersionId=1.7.5|Cohort=2014-06-08|Country=US|CountryName=United States|DeviceId=B49C9AC6‐C33B‐49C2‐8737‐CDBDF47028C2|DeviceType=iPad|FacebookId=0|GloryLevel=33|IDFA=D8D08C05‐8B71‐4AABAE69‐0D23F4932B3B|LastLevel=3|LastLevelHouse=barracks_level_pack_4|LastLevelMode=turn_bas
ed|Locale=en|OSVersion=7.1.2|RetantionDay=315|SessionGuid=9970d9f8‐f6ad‐4c1c‐9131‐
7689b0a068f0|SessionId=5665|TotalCredits=2|TotalCreditsBuy=0|TotalCreditsFree=2|TotalEn
ergy=180|TotalExpenseCredits=758|TotalExpenseFood=1605480|'

declare @xml xml

select @xml = CAST('<a ' +replace(replace(replace(replace(replace(@str,CHAR(10),''),CHAR(13),''),'= ','=|'), '=', '="'), '|','" ')+'/>'  AS XML)

select 
	@xml
	,@xml.value('a[1]/@ApplicationVersionId[1]', 'varchar(20)')
	,@xml.value('a[1]/@Cohort[1]', 'varchar(20)')
	,@xml.value('a[1]/@TotalCredits[1]', 'varchar(20)')
2 мар 17, 10:37    [20256567]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить