Исходная таблица
Col1 |Col2 |Col3 |Col4 | Col5
----------------------------------
hi | this | is | a | test
Таблица назначения
RowValues|
----------
hi
this
is
a
test
Я использую динамический SQL. Любая помощь ?
Это мой код, просто измените имя таблицы и идентификатор в предложении where на то, что вам подходит.
DECLARE @sql nVARCHAR(max), @TableName nvarchar(100), @where nvarchar(max)
set @TableName = 'stockItems'
set @where= ' where id = 2'
select @sql ='Select '
select @sql = @sql+ + ' '''+ [name] +' = ''+ cast(' + [name] + ' as nvarchar(10)) as '+[name]+', '
from sys.columns where object_name (object_id) = @TableName
set @sql = stuff(@sql, len(@sql), 1, '') + ' From '+@TableName+ @where
print @sql
set @sql = REPLACE(@sql,', From',' From')
set @sql = @sql + ' '
print @sql
exec(@sql)
Теперь мне нужно создать новую таблицу, в которой есть один столбец, содержащий каждое значение в виде строки.
Благодаря @Mahmoud-Gamal Решение должно быть примерно таким, как показано ниже.
declare @cols nvarchar(max)
select @cols = STUFF((SELECT distinct ',' +
QUOTENAME(column_name)
FROM information_schema.columns
WHERE table_name = 'vehicles'
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
, 1, 1, '');
declare @statement nvarchar(max)
set @statement ='
SELECT
ColumnName, Value
FROM
Vehicles
UNPIVOT
(
Value
FOR ColumnName
IN
(
'+@cols+'
)
)
AS A'
execute(@statement)
Пожалуйста, измените имя таблицы «транспортное средство» на любую таблицу в вашей базе данных, которая имеет столбцы разных типов (datetime, int и nvarchar), и отображается приведенная ниже ошибка. Любая помощь? Тип столбца "Описание" конфликтует с типом других столбцов, указанных в списке UNPIVOT.