Onderstaande query genereert dynamische pivot met de periodes op de x as en de activa op de y as. Hierin worden alle periodes getoond. Voor de handige Exact specialist is dit makkelijk te filteren op een of meerdere periodes. Let op het betreft de gebudgetteerde (berekende) afschrijvingen!
DECLARE @query VARCHAR(max)
DECLARE @cols VARCHAR(max)
SELECT @cols = Stuff((SELECT DISTINCT ','
+ Quotename(Cast(g.bkjrcode AS
VARCHAR(max))+RIGHT('0'+Ltrim(Rtrim(g.periode)), 2))
FROM gbkmut g
JOIN itemnumbers a
ON a.number = g.facode
WHERE g.bud_vers = 'MRP'
AND bdr_hfl <> 0
AND bdr_hfl IS NOT NULL
ORDER BY ','
+ Quotename(Cast(g.bkjrcode AS
VARCHAR(max))+RIGHT('0'+Ltrim(Rtrim(g.periode)), 2))
FOR xml path(''), type).value('.', 'NVARCHAR(MAX)'), 1, 1, '');
SELECT @query = ' select * from (select facode, cast(bkjrcode as varchar(max))+right(''0''+ltrim(rtrim(periode)),2) as periode, bdr_hfl from gbkmut g join ItemNumbers a on a.Number=g.facode where g.bud_vers =''MRP'' and bdr_hfl <>0 and bdr_hfl is not null ) src pivot ( sum(bdr_hfl) for periode in (' + @cols + ') )piv;'
EXEC (@query)