不确定从今天起最近12/13个月如何通过动态月份年份列细分每个客户的订单总金额
手动对月份进行硬编码并定义年份可以很好地工作,但不能动态显示出来
`Declare @SQLQuery as NVARCHAR(MAX)
Declare @PivotColumns as NVARCHAR(Max)
select @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME(DATENAME(MONTH, a.INVOICEDATE))
from dbo.TableA a,dbo.TableB b, dbo.TableC c
where a.INVOICEID=b.INVOICENUMBER and b.INVOICECUSTAC=c.CACCOUNT
set @SQLQUERY= N'select b.INVOICECUSTOMERACCOUNTNUMBER, c.ORGANIZATIONNAME, SUM(a.LINEAMOUNTTOTAL) [LineAmount]
from dbo.TableA a,dbo.TableB b, dbo.TableC c
where a.INVOICEID=b.INVOICENUMBER and b.INVOICECUSTAC=c.CACCOUNT
group by b.INVOICECUSTAC,c.ORGANIZATIONNAME,a.INVOICEDATE) as x
PIVOT (SUM(LineAmount) FOR Month IN (' + @PivotColumns +')) AS P'
exec sp_executesql @SQLQUERY`
查询继续运行,不会显示任何结果。
预期结果应该类似于:
帐户7月18日至8月18日...... 8月19日
ABC001 50000
DEF002 70000
答案 0 :(得分:0)
我认为您需要用以下查询替换参数@PivotColumns
的设置部分。
select @PivotColumns =
STRING_AGG (
(QUOTENAME ( (isnull( (DATENAME(MONTH, a.INVOICEDATE )), '') ) ) ),
','
)
from dbo.TableA a
join dbo.TableB b on a.INVOICEID=b.INVOICENUMBER
join dbo.TableC c on b.INVOICECUSTAC=c.CACCOUNT
Print @PivotColumns;