【发布时间】:2016-05-12 10:32:41
【问题描述】:
我有一张这样的桌子:
id unit
1 mm
2 cm
3 kg
当我对此执行枢轴操作时,我得到如下结果:
1 2 3
mm cm kg
是否可以在此处获取自定义列名,如下所示:
d1 d2 d3
mm cm kg
我为此使用 Pivot:
IF OBJECT_ID('tempdb..#t') IS NOT NULL
DROP TABLE #t
GO
CREATE table #t
(id varchar(max),unit varchar(max))
insert into #t (id,unit)values
(1,'kg'),
(2,'cm'),
(3,'mm'),
(4,'m')
DECLARE @statement NVARCHAR(max)
,@columns NVARCHAR(max)
SELECT @columns = ISNULL(@columns + ',', '') + N'[' + cast(tbl.id as varchar(max)) + ']'
FROM (
SELECT DISTINCT id
FROM #t
) AS tbl
SELECT @statement = 'select *
INTO ##temp
from (
SELECT id,[unit]
FROM #t
) as s
PIVOT
(max(unit) FOR id in(' + @columns + ')) as pvt
'
EXEC sp_executesql @statement = @statement
SELECT * FROM ##temp
DROP TABLE #t
DROP TABLE ##temp
有可能吗? 谢谢
【问题讨论】:
标签: sql sql-server sql-server-2008 tsql pivot