1
我在SQL Server表名爲test的有3列Sql Server的數據透視行轉換成列隨着列的其餘部分相同值
請參考此圖像。 Click to view
使用此查詢:
IF OBJECT_ID('tempdb..#tblcolumn') IS NOT NULL DROP TABLE #tblcolumn
create table #tblcolumn(PeriodName varchar(30), PeriodID int,accountid int)
insert into #tblcolumn values('p1',1,110)
insert into #tblcolumn values('p2',2,111)
insert into #tblcolumn values('p3',3,112)
insert into #tblcolumn values('p4',4,113)
insert into #tblcolumn values('p5',5,114)
insert into #tblcolumn values('p6',6,115)
insert into #tblcolumn values('p7',7,116)
select * from #tblcolumn
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
DECLARE @colsWithNoNulls NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(PeriodName)
from #tblcolumn
group by PeriodName
order by PeriodName
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
select @cols
set @query = 'SELECT accountid,'[email protected]+' into #temp1 from #tblcolumn
pivot
(
sum(PeriodID)
for PeriodName in (' + @cols + ')
) p '
set @query = @query+ 'select * from #temp1'
execute(@query);
任何幫助,將不勝感激。謝謝。
非常感謝你。你節省了我很多時間。這是根據我的預期工作。非常感謝。 – user3044462
歡迎,欣賞接受答案,如果它的作品謝謝 –