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

Откуда:
Сообщений: 405
Всем привет! Тыкните плыз как лучше и изящней получить из таблицы:

Drive FreeSpaceMB
C 49694
D 872977
E 111865

Вот такую таблицу:

FiledValue FieldName
C Drive
D Drive
E Drive
49694 FreeSpaceMB
872977 FreeSpaceMB
111865 FreeSpaceMB

При условии что столбцы первоначальной таблицы (Drive,FreeSpaceMB) формируются динамически.
Спасибо.
30 мар 15, 11:04    [17448653]     Ответить | Цитировать Сообщить модератору
 Re: Название столбца в значение таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
temoxa
формируются динамически.

Еще раз формировать динамически
30 мар 15, 11:07    [17448682]     Ответить | Цитировать Сообщить модератору
 Re: Название столбца в значение таблицы  [new]
Добрый Э - Эх
Guest
temoxa,

unpivot ?
30 мар 15, 11:07    [17448687]     Ответить | Цитировать Сообщить модератору
 Re: Название столбца в значение таблицы  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
temoxa,

+ xml костыль

;with 
t0(Drive, FreeSpaceMB) as
(
	select 'C', 49694 union all
	select 'D', 872977 union all
	select 'E', 111865
),
t1(x) as
(
	select *
	from
		t0
	for xml path('t0'), type
)
select 
	xn.value('.', 'nvarchar(max)') FiledValue, 
	cast(xn.query('local-name(.)') as nvarchar(max)) as FiledName
from
	t1
		cross apply
	t1.x.nodes('/t0/*') qx(xn);

30 мар 15, 11:19    [17448766]     Ответить | Цитировать Сообщить модератору
 Re: Название столбца в значение таблицы  [new]
temoxa
Member

Откуда:
Сообщений: 405
Добрый Э - Эх, да это то что нада, вот пример, может кому нить пригодится:

SELECT FieldName, FiledValue
FROM
(SELECT CAST(Drive AS sql_variant) AS Drive
		, CAST(FreeSpaceMB AS sql_variant) AS FreeSpaceMB
FROM [#304DAA0D-FC42-4BC3-B2E4-55816310C1B4]) d
UNPIVOT (
    FiledValue FOR FieldName IN (
        Drive, FreeSpaceMB 
    )
) unpvt
30 мар 15, 11:20    [17448775]     Ответить | Цитировать Сообщить модератору
 Re: Название столбца в значение таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
temoxa
да это то что нада, вот пример, может кому нить пригодится:

А как он пригодится, сели имена столбцов могут быть другие ?
И в чем смысл сначла сделать PIVOT и сразу UNPIVOT ?
30 мар 15, 11:24    [17448807]     Ответить | Цитировать Сообщить модератору
 Re: Название столбца в значение таблицы  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
че-то с бодуна после выходных не увидел unpivot
30 мар 15, 11:24    [17448813]     Ответить | Цитировать Сообщить модератору
 Re: Название столбца в значение таблицы  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
а, вот что меня толкнуло на xml костыль

автор
При условии что столбцы первоначальной таблицы (Drive,FreeSpaceMB) формируются динамически.
30 мар 15, 11:28    [17448851]     Ответить | Цитировать Сообщить модератору
 Re: Название столбца в значение таблицы  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
+
fix

-- заменить
	cast(xn.query('local-name(.)') as nvarchar(max)) as FiledName
-- на
	xn.value('local-name(.)', 'nvarchar(max)') FiledName
30 мар 15, 11:32    [17448879]     Ответить | Цитировать Сообщить модератору
 Re: Название столбца в значение таблицы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8723
формируются динамически

Ф топку такое приложение.
30 мар 15, 12:59    [17449494]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить