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

Откуда:
Сообщений: 28
Добрый день.
Прошу помощи у гуру.
Задача:
Необходимо получить таблицу из заданной для 1-й записи, в которой всего 2 поля:
- имя поля
- значение поля
На тип значения можно не заморачиваться.

Например, для таблицы
CREATE TABLE [dbo].[table1] ( [fld1] varchar(10) , [fld2] varchar(10) , [fld3] varchar(10) , [fld4] varchar(10) , [fld5] varchar(10) )
--ON [PRIMARY]
GO
INSERT INTO [dbo].[table1] ([fld1], [fld2], [fld3], [fld4], [fld5]) VALUES (N'10', N'ww', N'20', N'rr', N'30')
GO

Для этой записи должен получиться следующий набор записей:
NameField ValueField
fld1 10
fld2 ww
fld3 20
fld4 rr
fld5 30


Версия сервера:
Microsoft SQL Server 2005 - 9.00.1399.06 Standard Edition (Build 3790: Service Pack 2)

Заранее благодарен за любую идею.
31 мар 11, 12:43    [10450747]     Ответить | Цитировать Сообщить модератору
 Re: Получить список полей и их значения  [new]
iljy
Member

Откуда:
Сообщений: 8711
Sergey v.p.,

UNPIVOT
31 мар 11, 12:46    [10450780]     Ответить | Цитировать Сообщить модератору
 Re: Получить список полей и их значения  [new]
Sergey v.p.
Member

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

Спасибо, Unpivot посмотрю, но там нужно явно указывать список полей.
Как бы это сделать красиво, без лишних глупостей?
31 мар 11, 12:53    [10450829]     Ответить | Цитировать Сообщить модератору
 Re: Получить список полей и их значения  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Sergey v.p.
Как бы это сделать красиво, без лишних глупостей?
Написать скрипт, который будет генерировать запрос на выборку.
31 мар 11, 12:56    [10450852]     Ответить | Цитировать Сообщить модератору
 Re: Получить список полей и их значения  [new]
Sergey v.p.
Member

Откуда:
Сообщений: 28
Получилось следующее:

  declare @NameTable varchar(50), @sReq varchar(8000)
  
  set @NameTable='table1'
  

  set @sReq = 'SELECT NameFld, ValueFld FROM ( SELECT '
  select @sReq = @sReq + COLUMN_NAME+'= cast('+COLUMN_NAME+' as varchar(200)), ' 
              from INFORMATION_SCHEMA.COLUMNS  where LOWER(TABLE_NAME)=@NameTable
  select @sReq = substring(@sReq,1,len(@sReq)-1)            
  select @sReq = @sReq + ' FROM '+@NameTable+') p UNPIVOT (ValueFld FOR NameFld IN ( '
  select @sReq = @sReq + COLUMN_NAME+', ' 
              from INFORMATION_SCHEMA.COLUMNS  where LOWER(TABLE_NAME)=@NameTable
  select @sReq = substring(@sReq,1,len(@sReq)-1)             
  select @sReq = @sReq + ') ) AS up'

  exec(@sReq)

Похоже на правду?
31 мар 11, 13:57    [10451434]     Ответить | Цитировать Сообщить модератору
 Re: Получить список полей и их значения  [new]
PG81
Member

Откуда: Тверь
Сообщений: 882
Благодарю
21 сен 11, 13:44    [11311712]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить