我之前收到了有关创建查询的帮助,该查询列出了按月列出的总销售额作业列表。但是,我不能将其作为变量需求声明的视图。 我以为我可以使用表值函数(我之前从未使用过),但显然我需要定义表的列,如果它们是动态的(列是yyyy-mm)我不能这样做。 有人可以建议我如何解决这个问题吗?
我不熟悉创建除了视图以外的任何内容,所以这对我来说是全新的。显然,如果使用TVF并不是最好的方法,请提供建议。
查询:
Declare @SQL varchar(max) = Stuff((Select Distinct ',' + QuoteName(YearMonth) From v_JobSalesByMonth Order by 1 For XML Path('')),1,1,'')
Select @SQL = '
Select [JobID], [TotalJobSales],' + @SQL + '
From (
Select JobID
,TotalJobSales = sum(SalesForMonth) over (Partition By JobID)
,YearMonth
,SalesForMonth
From v_JobSalesByMonth A) A
Pivot (sum(SalesForMonth) For [YearMonth] in (' + @SQL + ') ) p'
Exec(@SQL);
我开始创建函数,但对如何定义动态列感到困惑。
CREATE FUNCTION db.tvfnJobSalesByMonthPivot (@JobID INT)
RETURNS @JobSalesByMonth TABLE
(
JobID int PRIMARY KEY NOT NULL,
TotalJobSales decimal(6,2) NULL,
2016-12 (ermmmmm?)
)
非常感谢提前。 保罗