【发布时间】:2016-10-14 22:17:50
【问题描述】:
我正在尝试将一个简单的表从行转换为具有两个字符串变量的列。我从网上浏览了几个例子,但没有成功。行数会有所不同,因此我需要动态转置表格。下面的代码至少不会产生错误但不会产生结果!
样本表
create table #Encabezado
(
NodeName nvarchar(100),
NodeValue nvarchar(100)
)
INSERT INTO #Encabezado (NodeName, NodeValue) VALUES
('RUTEmisor','88888888-8'),
('RznSoc','EMPRESA DE PRUEBA'),
('GiroEmis','Informatica'),
('Acteco','1'),
('CdgSIISucur','59529595'),
('DirOrigen','Teatinos 120'),
('CmnaOrigen','Santiago'),
('CiudadOrigen','Santiago')
GO
反透视代码
DECLARE @colsUnpivot AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @colsUnpivot
= stuff((select ','+quotename(C.column_name)
from information_schema.columns as C
where C.table_name = '#Encabezado' and
C.column_name like '%Name'
for xml path('')), 1, 1, '')
set @query
= 'select NodeName,
Nodevalue
from #Encabezado
unpivot
(
NodeName
for NodeName in ('+ @colsunpivot +')
) u'
exec sp_executesql @query;
任何帮助将不胜感激
【问题讨论】:
-
Pivot 还是 UnPivot? “行到列”表示 Pivot,但您的代码中有 UnPivot。
标签: sql-server pivot transpose unpivot