Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 динамический unpivot  [new]
Yurii Tokarev
Guest
Задача: транспонировать(развернуть, ... назовите это как угодно) таблицу с переменным количеством столбцов, содержащую всегда только 1 запись(чтоб в итоге получилась табличка с 2-мя столбцами: имя_столбца, значение), чтоб потом её можно было подставить в select.

я новичок в MS SQL. Пробовал решить через unpivot, но не особо получилось, т.к. написано, что при перечислении столбцов в предложении unpivot их имена должны быть жёстко прописаны, поэтому ни одна из моих попыток сделать что-то типа:
CREATE FUNCTION TnowView ()
RETURNS @ResultTable TABLE 
(	
	[Header] [int] NULL,
	[aData] [float] NULL
)
AS
BEGIN
	declare @Flds VARCHAR(MAX)
	declare @StrSQL VARCHAR(MAX)
	set @Flds = (
		select Flds = STUFF(
		(select ',' + name from sys.columns
			where object_id = OBJECT_ID('dbo.Tnow','U')
			FOR XML PATH('')),1,1,'')
				)
	set @StrSQL = 'select * from Tnow UNPIVOT (aData for fields in (' + @Flds + ') ) as unpvt'
	insert into @ResultTable execute (@StrSQL)
	RETURN 
END

пока успеха не принесли, так как говорят, что в UDF динамические запросы запрещены. Вопрос: Можно ли как-то выполнить поставленную задачу? Ну а если ДА(вдруг как-то можно?), то подскажите в каком направлении искать?
1 ноя 16, 11:49    [19845276]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить