if object_id('tempdb.dbo.#TotalSalesForMonth') is not null???? drop table #TotalSalesForMonth? --刪除臨時表? select * into? #TotalSalesForMonth? from (? select ?cast(month(CreateDate) as nvarchar)?? as?? monthN, ??? sum(BaseQuantity)?? as?? total ? from?? (?select a.CreateDate,b.BaseQuantity?from? dbo.T_Sales_Order a left join dbo.T_Sales_Product as b ?on a.Id =b.ParentId ?where year(a.CreateDate)=year(getdate())? ) c? group by month(CreateDate)) pDECLARE @str VARCHAR(500) ,@Sql NVARCHAR(max)SET @str=''SELECT @str=@str+','+'['+cast(monthN as nvarchar)+']' FROM #TotalSalesForMonthSET @str=right(@str,len(@str)-1)--由于pivot 不支持 在in ()中直接添加字符串,所以需要使用 sql 拼接一下SET @Sql='select * from? #TotalSalesForMonth pivot (sum(total) for monthN in ('+@str+') ) as pvt 'if object_id('tempdb.dbo.#ForMonth') is not null???? drop table #ForMonth? --刪除臨時表? insert into #ForMonth exec(@Sql)
?
(1 行受影響)消息 208,級別 16,狀態 0,第 25 行對象名? '#ForMonth' 無效。
如何把EXEC(@SQL)得到的結果集(列是動態的)插入到一張臨時表
SMILET
2018-12-07 13:11:57