Hi Guys,
I've been using a query to combine data from multiple tables within a date range. However, I'm battling to group the records in the date range by week in a cross tab in crystal.
Can anyone help me understand how to link the dates from each of the different tables to use as a way to group them by week?
Here's the query I'm using at the moment:
Declare @start_date date
Declare @end_date date
Set @start_date ='2016-02-01'
Set @end_date ='2016-02-29'
select j.ItmsGrpNam
,i.ItemCode
,i.ItemName
,ISNULL(sales.Q, 0)AS'Sales Qty'
,ISNULL(credit.Q, 0)AS'Credit Qty'
,ISNULL(sales.KG, 0)AS'Sales KG'
,ISNULL(credit.KG, 0)AS'Credit KG'
,ISNULL(sales.V, 0)AS'Sales Value'
,ISNULL(credit.V, 0)AS'Credit Value'
,ISNULL(forecast.q, 0)AS'Forecast KG'
,ISNULL(forecast.Q*price.p, 0)AS'Forecast Value'
from OITM i
INNERJOIN OITB j ON i.ItmsGrpCod = j.ItmsGrpCod
LEFTOUTERJOIN(SELECT T2.DocDate AS D, T0.ItemCode,SUM(t0.[LineTotal])AS V,SUM(t0.[Quantity])AS Q,SUM(t0.Quantity*T1.[NumInSale])AS KG
FROM INV1 T0
INNERJOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
INNERJOIN OINV T2 ON T0.[DocEntry] = T2.[DocEntry]
WHERE T2.DocDate >= @start_date AND T2.DocDate <= @end_date
GROUPBY t0.ItemCode, T2.DocDate ) sales ON i.ItemCode = sales.ItemCode
LEFTOUTERJOIN(SELECT T0.[ItemCode],SUM(t0.[LineTotal])AS V,SUM(T0.[Quantity])AS Q,SUM(T0.[Quantity]*T1.[NumInSale])AS KG
FROM RIN1 T0
INNERJOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
INNERJOIN ORIN T2 ON T0.[DocEntry] = T2.[DocEntry]
WHERE T2.DocDate >= @start_date AND T2.DocDate <= @end_date
GROUPBY T0.ItemCode ) credit ON i.ItemCode = credit.ItemCode
LEFTOUTERJOIN(SELECT T0.[ItemCode],SUM(T0.[Quantity])AS Q
FROM FCT1 T0
WHERE T0.Date>= @start_date AND T0.Date<= @end_date
GROUPBY T0.ItemCode) forecast ON i.ItemCode = forecast.ItemCode
LEFTOUTERJOIN(SELECT T0.ItemCode,MAX(t0.price)AS P
FROM ITM1 T0
INNERJOIN FCT1 T1 ON t0.ItemCode = t1.ItemCode
GROUPBY t0.[ItemCode]) price ON i.ItemCode = price.ItemCode
WHERE j.ItmsGrpNam <>'Items'AND i.ValidFor ='Y'