OK I've been working on a this year /last year query and the data stacks up but looks a bit messy and I'm not sure how or if i can alter the layout
Current Query is
DECLARE @year date
DECLARE @yearB date
SET @year = GETDATE()
SET @yearB = GETDATE()
SET @year = DATEADD(YEAR, DATEDIFF(YEAR, 0, @year), 0)
SET @yearB = DATEADD(YEAR, DATEDIFF(YEAR, 0, @yearB)-1, 0)
SELECT -- MAX (Customers.CustomerId) CustomerId,
--SUM (SalesInvoiceItems.CurItemValue) AS ItemValue ,
--MAX (SalesInvoices.EffectiveDate) AS EffectiveDate,
dbo.wfn_GetUDFNvarchar ('Category','Products',Products.Product)AS 'Category',
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 00, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 01, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Jan,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 00, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 01, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Jan1,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 01, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 02, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Feb,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 01, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 02, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Feb1,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 02, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 03, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Mar ,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 02, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 03, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Mar1 ,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 03, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 04, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Apr,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 03, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 04, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Apr1,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 04, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 05, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS May,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 04, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 05, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS May1,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 05, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 06, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS June ,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 05, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 06, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS June1 ,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 06, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 07, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS July,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 06, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 07, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS July1,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 07, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 08, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Aug,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 07, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 08, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Aug1,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 08, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 09, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Sep ,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 08, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 09, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Sep1 ,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 09, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 10, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Oct ,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 09, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 10, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Oct1 ,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 10, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 11, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Nov,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 10, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 11, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Nov1,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 11, @year) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 12, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Dec,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= DATEADD(MONTH, 11, @yearB) AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 12, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS Dec1,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= @year AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 12, @year)
THEN SalesInvoiceItems.Quantity ELSE 0 END) AS TotalUnits,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= @year AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 12, @yearB)
THEN SalesInvoiceItems.Quantity ELSE 0 END) AS TotalUnitsLastYear,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= @yearB AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 12, @year)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS TotalValueCurrentYear,
SUM(CASE WHEN SalesInvoices.EffectiveDate >= @yearB AND
SalesInvoices.EffectiveDate < DATEADD(MONTH, 12, @yearB)
THEN SalesInvoiceItems.ItemValue ELSE 0 END) AS TotalValueLastYear
FROM SalesInvoices INNER JOIN
SalesInvoiceItems ON SalesInvoices.SalesInvoice = SalesInvoiceItems.SalesInvoice INNER JOIN
Products ON SalesInvoiceItems.Product = Products.Product INNER JOIN
Customers ON SalesInvoices.Customer = Customers.Customer INNER JOIN
CommissionClasses ON Customers.CommissionClass = CommissionClasses.CommissionClass
WHERE
Customers.CustomerId IN ('WILLHIGH','KLONKEL_','WILLBYRK','WILLCAR_','KLONINV_','WILLSTO_','WILLGARF')
GROUP BY
dbo.wfn_GetUDFNvarchar ('Category','Products',Products.Product)
ORDER BY dbo.wfn_GetUDFNvarchar ('Category','Products',Products.Product) ASC
and the results look like this
Category | Jan | Jan1 | Feb | Feb1 | Mar | Mar1 | Apr | Apr1 | May | May1 | June | June1 | July | July1 | Aug | Aug1 | Sep | Sep1 | Oct | Oct1 | Nov | Nov1 | Dec | Dec1 | TotalUnits | TotalUnitsLastYear | TotalValueCurrentYear | TotalValueLastYear |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ARTBLOCKS | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00000 | 0.00000 | 0.00 | 0.00 |
CANVAS | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00000 | 0.00000 | 0.00 | 0.00 |
CARD | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00000 | 0.00000 | 0.00 | 0.00 |
CHRISTMAS CARDS | -56.76 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 261.38 | 0.00 | 0.00 | 990.72 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 31.00000 | 0.00000 | 1195.34 | 990.72 |
CLOCK | -81.21 | -13.87 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | -9.03 | 0.00 | 0.00 | 0.00 | 0.00 | 388.82 | 0.00 | -90.16 | 0.00 | 0.00 | 0.00 | 0.00 | 881.46 | 0.00 | 0.00 | 0.00 | 57.38 | 22.00000 | 0.00000 | 1133.39 | 915.94 |
DISPLAYS | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1.00000 | 0.00000 | 0.00 | 0.00 |
FRAMED | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00000 | 0.00000 | 0.00 | 0.00 |
MIRROR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 248.64 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00000 | 0.00000 | 248.64 | 248.64 |
PHOTOFRAME | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00000 | 0.00000 | 0.00 | 0.00 |
PICTURE GALLERY | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00000 | 0.00000 | 0.00 | 0.00 |
PICTURE SMALL | 0.00 | 0.00 | 0.00 | 0.00 | -24.31 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 445.32 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 2552.50 | 0.00 | 0.00 | 0.00 | 0.00 | 44.00000 | 0.00000 | 2973.51 | 2552.50 |
PLAQUES | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00000 | 0.00000 | 0.00 | 0.00 |
WOODEN PLAQUES | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00000 | 0.00000 | 0.00 | 0.00 |
What I would like is Single months and split category's like the below
Category | Jan | Feb | Mar | Apr | May |
---|---|---|---|---|---|
ARTBLOCKS | 0 | 0 | 0 | 0 | 0 |
ARTBLOCKS - 1 | |||||
CANVAS | 0 | 0 | 0 | 0 | 0 |
CANVAS - 1 | |||||
CARD | 0 | 0 | 0 | 0 | 0 |
CARD - 1 | |||||
CHRISTMAS CARDS | -56.76 | 0 | 0 | 0 | 0 |
CHRISTMAS CARDS - 1 | |||||
CLOCK | -81.21 | 0 | 0 | 0 | 0 |
Hope that make sense and many thanks for any assistance
Cheers Jon