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

Откуда: Норильск
Сообщений: 932
Всем доброго дня. Замучилась искать ответ, поэтому напишу новое сообщение.

MS SQL 2000.

Есть таблица такого вида:

запрос
Select PropName, PropValue from MyTable


PropNamePropValue
Операционная система Майкрософт Windows 8.1 Профессиональная
Оперативная память 2047.18 Mb
Домен mytest
Имя компьютера Ivanov
Версия DirectX 4.09.00.0904
HDD Диск 1: 465.76 Gb MB0500EBNCR ATA Device
HDD Диск 2: 149.05 Gb ST3160813AS ATA Device
Логические диски C: 97.31 Gb (свободно 69.64 Gb)
Логические диски F: 149.04 Gb (свободно 73.51 Gb)


Из этих данных необходимо получить вот такую таблицу (перевернуть данные, из первого столбца должны быть названия всех других столбцов):

Операционная системаОперативная памятьДоменИмя компьютераВерсия DirectXHDDHDDЛогические диски Логические диски
Майкрософт Windows 8.1 Профессиональная2047.18 MbmytestIvanov4.09.00.0904Диск 1: 465.76 Gb MB0500EBNCR ATA DeviceДиск 2: 149.05 Gb ST3160813AS ATA DeviceC: 97.31 Gb (свободно 69.64 Gb)D: 368.10 Gb (свободно 243.64 Gb)


Всем удачного дня и заранее спасибо за ответы.
13 июн 17, 11:27    [20559760]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Настенька,

https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx
13 июн 17, 11:32    [20559785]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Настенька
Member

Откуда: Норильск
Сообщений: 932
Выделяю красным

When PIVOT and UNPIVOT are used against databases that are upgraded to SQL Server 2005 or later

У меня MS SQL 2000.
13 июн 17, 11:34    [20559804]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Настенька,

Оу, у вас 2000. Тогда не подойдет.
13 июн 17, 11:34    [20559805]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Добрый Э - Эх
Guest
aleksrov,

и это на 2000-м то сервере?
13 июн 17, 11:35    [20559808]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Добрый Э - Эх
Guest
Настенька,

когда не было PIVOT - юзали CASE. А в твеом случае - ещё и D-SQL прикрутить придется...
13 июн 17, 11:36    [20559817]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Настенька
Member

Откуда: Норильск
Сообщений: 932
Нет, это просто таблица, отвечайте, пожалуйста, по существу, вопрос срочный. Спасибо.
13 июн 17, 11:37    [20559820]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Настенька,
уже ответили вам
аля
select
  max(case when columnname = 'FirstName' then value end) Firstname,
  max(case when columnname = 'Amount' then value end) Amount,
  max(case when columnname = 'PostalCode' then value end) PostalCode,
  max(case when columnname = 'LastName' then value end) LastName,
  max(case when columnname = 'AccountNumber' then value end) AccountNumber
from yourtable
13 июн 17, 11:40    [20559830]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Настенька
Member

Откуда: Норильск
Сообщений: 932
автор
когда не было PIVOT - юзали CASE. А в твеом случае - ещё и D-SQL прикрутить придется...


Можно пример на моем примере, если не сложно.
13 июн 17, 11:40    [20559833]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Добрый Э - Эх
Guest
Настенька
Нет, это просто таблица, отвечайте, пожалуйста, по существу, вопрос срочный. Спасибо.
Это про что твоя реплика? тебе вполне конкретно ответили - CASE как замена PIVOT. D-SQL для формирования имен колонок по данным из полей таблицы.
А если нужно за тебя сделать запрос - то это в соседнюю ветку форума
13 июн 17, 11:40    [20559842]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
invm
Member

Откуда: Москва
Сообщений: 9273
Настенька,

Допилите под свои нужды - http://www.sqlteam.com/article/dynamic-cross-tabs-pivot-tables
13 июн 17, 11:42    [20559846]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Настенька
Member

Откуда: Норильск
Сообщений: 932
Спасибо всем огромное, особенно TaPaK.
13 июн 17, 12:09    [20559972]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Alibek B.
Member

Откуда:
Сообщений: 3586
Настенька
Замучилась искать ответ

Потому что его не существует.
Имя у столбца должно быть уникальным.
13 июн 17, 16:27    [20561147]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 776
А можно как-нибудь названия столбцов замутить из переменной, кроме как динамическим SQLем?
18 июл 17, 18:37    [20655262]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Adx
Guest
Шыфл
А можно как-нибудь названия столбцов замутить из переменной, кроме как динамическим SQLем?


Сильный вопрос. Не понятно о чем, но звучит загадочно)
18 июл 17, 18:55    [20655328]     Ответить | Цитировать Сообщить модератору
 Re: Значения столбца превратить в названия других столбцов  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 776
Adx,

задача стоит как пивотирование таблицы по нескольким ключевым полям.

Решил примерно так

select distinct KeyColumn,BusinessUnitName,SalesDistrictName 
into #result
from #dataset

while @i>0 
	begin
	set @qq=(select colname from @periods where id=@i)
	set @qq1=N'ALTER TABLE #result add [NO ' + @qq + '] decimal(22,4), [NS ' + @qq + '] decimal(22,4)'
	exec sp_executesql @qq1
	
	set @qq0='
		update a 
		set 
			[NO ' + @qq + '] = b.NewOrders,
			[NS ' + @qq + '] = b.NetSales

		from 
		#result a join #dataset b on a.KeyColumn=b.KeyColumn
		and b.colname='''+ @qq + ''''
	
	exec sp_executesql @qq0
	
	set @i=@i-1
end;
21 июл 17, 12:10    [20664277]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить