使用动态列

时间:2017-01-24 09:32:05

标签: sql-server

我之前收到了有关创建查询的帮助,该查询列出了按月列出的总销售额作业列表。但是,我不能将其作为变量需求声明的视图。 我以为我可以使用表值函数(我之前从未使用过),但显然我需要定义表的列,如果它们是动态的(列是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?)
)

非常感谢提前。 保罗

0 个答案:

没有答案