SQL-Pivot on AX ledger balance
2018-09-21 本文已影响0人
axxxxxxxx
http://sharedderrick.blogspot.com/2013/02/pivot-dynamic-pivot.html
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX)
declare @fromDate datetime
set @fromDate = '2017-4-1'
drop table if exists #TempTable
select * into #TempTable from
(SELECT LEFT(CONVERT(VARCHAR, e.ACCOUNTINGDATE, 120), 7) as TransDate, e.SUBLEDGERVOUCHERDATAAREAID as company, m.MAINACCOUNTID as ID,
(a.ACCOUNTINGCURRENCYAMOUNT)AS BL
FROM GENERALJOURNALACCOUNTENTRY a
JOIN GENERALJOURNALENTRY e ON e.[PARTITION] = a.[PARTITION] AND e.RECID = a.GENERALJOURNALENTRY
JOIN MAINACCOUNT m ON m.[PARTITION] = a.[PARTITION] AND m.RECID = a.MAINACCOUNT
JOIN FISCALCALENDARPERIOD p ON p.[PARTITION] = e.[PARTITION] AND p.RECID = e.FISCALCALENDARPERIOD
WHERE p.type = 1-- 0=Opening,1=Operating,2=Closing
and e.accountingdate >= @FromDate and e.accountingdate < dateadd(month,12,@FromDate)
)AS A
--select * from #TempTable
SELECT @cols = COALESCE(@cols + ',' ,'' ) + QUOTENAME(TransDate)
FROM #TempTable
GROUP BY QUOTENAME(TransDate)
Order by QUOTENAME(TransDate)
SELECT @query = N'
SELECT * FROM #TempTable PIVOT (SUM(BL) FOR TransDate
IN (' + @cols + N') ) AS pvt order by company'
EXEC sp_executesql @query;
drop table if exists #TempTable