我有一个名为#MonthlySales的表,它提取ItemNumber,MonYearNum & UnitsSold。我此枢转用下面的脚本:SQL Server数据透视表 - 动态
SELECT ITEMNUMBER [SKU] , ISNULL([1-2011], 0) [Jan 11] , ISNULL([2-2011], 0) [Feb 11] , ISNULL([3-2011], 0) [Mar 11] , ISNULL([4-2011], 0) [Apr 11] , ISNULL([5-2011], 0) [May 11] , ISNULL([6-2011], 0) [Jun 11] , ISNULL([7-2011], 0) [Jul 11] , ISNULL([8-2011], 0) [Aug 11] , ISNULL([9-2011], 0) [Sep 11] , ISNULL([10-2011], 0) [Oct 11] , ISNULL([11-2011], 0) [Nov 11] , ISNULL([12-2011], 0) [Dec 11], ISNULL([1-2012], 0) [Jan 12] , ISNULL([2-2012], 0) [Feb 12] , ISNULL([3-2012], 0) [Mar 12] , ISNULL([4-2012], 0) [Apr 12] , ISNULL([5-2012], 0) [May 12] , ISNULL([6-2012], 0) [Jun 12] , ISNULL([7-2012], 0) [Jul 12] , ISNULL([8-2012], 0) [Aug 12] , ISNULL([9-2012], 0) [Sep 12] , ISNULL([10-2012], 0) [Oct 12] , ISNULL([11-2012], 0) [Nov 12] , ISNULL([12-2012], 0) [Dec 12]
FROM #MONTHLYSALES PIVOT ( SUM(UNITSSOLD)FOR MONTHYEARNUM IN ( [1-2011],[2-2011],[3- 2011-2011],[4-2011],[5-2011],[6-2011],[7-2011],[8-2011],[9-2011],[10-2011],[11-2011] ,[12-2011] ,[1-2012],[2-2012], [3-2012],[4-2012],[5-2012],[6-2012],[7-2012] ,[8-2012],[9-2012],[10-2012],[11-2012],[12-2012] ) )AS TOTSOLDPERMONTH ORDER BY ITEMNUMBER
正如您所看到的,MonthYearNum列被硬编码为像1-2011这样的值。不过,我无法对这些进行硬编码,因为它们是动态的 - 取决于运行此报表的哪一天,将从#monthlysales表中返回不同的MonthYearNum值。
有没有办法让我动态地调整返回的值?
TIA
嘿,谢谢。在你的例子中,GetTableColumnNames函数会是什么样子? – Rivka
这是一个由发布该问题的人定义的函数 - 在上面列出了实际问题中的代码。 –