I have a query where I am summing sales for the current year 2004. This query is grouping by year and month based in criteria for the current year. I need to also though in a column summarize 2003 all data not by month, but grouped the same way on the channel. Here is the query any help would be appreciated. I also will show the nested select I tried but I got the same number all the way down the column. Thanks all.
ORIGINAL QUERY WITHOUT THE SUM FOR 2003. The Case statement in the WHERE Clause just gets the dateshipped between 1/1/2004 - todays date time.
SELECT
Year([DateShipped]) AS DYear, Month([DateShipped]) AS DMonth,DATENAME(month, [DateShipped]) AS 'Month Name'
,CASE WHEN tblSALESDIVISIONS.DIVISION IS NULL THEN 'Zone' ELSE tblSALESDIVISIONS.DIVISION END AS DIVISION,
ISNULL( tblDistChannel.CHANNEL, 'Unassigned') AS CHANNEL,
Case WHEN tblDistChannel.CUSTOMER IS NULL then RM00101.STMTNAME else
tblDistChannel.CUSTOMER END AS CUSTOMER,
sum(Sales_Orders_Details.OrderQuantity * ( Sales_Orders_Details.UnitPrice - Sales_Orders_Details.UnitDiscount )) as Gross
FROM ((Sales_Orders_Master_File INNER JOIN Sales_Orders_Details ON Sales_Orders_Master_File.SalesOrderNo = Sales_Orders_Details.SALESORDERNO) LEFT JOIN (tblDistChannel LEFT JOIN tblSALESDIVISIONS ON tblDistChannel.CHANNEL = tblSALESDIVISIONS.CHANNEL) ON Sales_Orders_Master_File.CustomerNo = tblDistChannel.CUSTNMBR) INNER JOIN RM00101 ON Sales_Orders_Master_File.CustomerNo = RM00101.CUSTNMBR
WHERE CUSTCLAS <> 'DTC' and [OrderStreamType]<>2 and Sales_Orders_Master_File.OrderStatusCode <> 15 AND Sales_Orders_Details.Itemtype <> 0
AND (DateShipped between cast (cast(datepart(year,getdate()) as char(4)) + '-' + '01-01'
as datetime) and cast (cast(datepart(year,getdate()) as char(4)) + '-' +
substring(convert(char(2),getdate(),101),1,2) + '-' + cast(datepart(day,getdate()) as char(2))
as datetime))
GROUP BY Year([DateShipped]) , Month([DateShipped]),DATENAME(month, [DateShipped]), CASE WHEN tblSALESDIVISIONS.DIVISION IS NULL THEN 'Zone' ELSE tblSALESDIVISIONS.DIVISION END,ISNULL( tblDistChannel.CHANNEL, 'Unassigned') ,
Case WHEN tblDistChannel.CUSTOMER IS NULL then RM00101.STMTNAME else
tblDistChannel.CUSTOMER END
QUERY I TRIED WITH NESTED SELECT BUT GOT SAME NUMBER ALL THE WAY THROUGH.
SELECT
Year([DateShipped]) AS DYear, Month([DateShipped]) AS DMonth,DATENAME(month, [DateShipped]) AS 'Month Name'
,CASE WHEN tblSALESDIVISIONS.DIVISION IS NULL THEN 'Zone' ELSE tblSALESDIVISIONS.DIVISION END AS DIVISION,
ISNULL( tblDistChannel.CHANNEL, 'Unassigned') AS CHANNEL,
Case WHEN tblDistChannel.CUSTOMER IS NULL then RM00101.STMTNAME else
tblDistChannel.CUSTOMER END AS CUSTOMER,
(SELECT sum(Sales_Orders_Details.OrderQuantity * ( Sales_Orders_Details.UnitPrice - Sales_Orders_Details.UnitDiscount ))
FROM ((Sales_Orders_Master_File INNER JOIN Sales_Orders_Details ON Sales_Orders_Master_File.SalesOrderNo = Sales_Orders_Details.SALESORDERNO) LEFT JOIN (tblDistChannel LEFT JOIN tblSALESDIVISIONS ON tblDistChannel.CHANNEL = tblSALESDIVISIONS.CHANNEL) ON Sales_Orders_Master_File.CustomerNo = tblDistChannel.CUSTNMBR) INNER JOIN RM00101 ON Sales_Orders_Master_File.CustomerNo = RM00101.CUSTNMBR
WHERE CUSTCLAS <> 'DTC' and [OrderStreamType]<>2 and Sales_Orders_Master_File.OrderStatusCode <> 15 AND Sales_Orders_Details.Itemtype <> 0
AND (DateShipped between cast (cast(datepart(year,getdate())-1 as char(4)) + '-' + '01-01'
as datetime) and cast (cast(datepart(year,getdate())-1 as char(4)) + '-12-31'
as datetime))
AND tblDistChannel.Channel = tblDistChannel.Channel
) AS Gross03,
sum(Sales_Orders_Details.OrderQuantity * ( Sales_Orders_Details.UnitPrice - Sales_Orders_Details.UnitDiscount )) as Gross
FROM ((Sales_Orders_Master_File INNER JOIN Sales_Orders_Details ON Sales_Orders_Master_File.SalesOrderNo = Sales_Orders_Details.SALESORDERNO) LEFT JOIN (tblDistChannel LEFT JOIN tblSALESDIVISIONS ON tblDistChannel.CHANNEL = tblSALESDIVISIONS.CHANNEL) ON Sales_Orders_Master_File.CustomerNo = tblDistChannel.CUSTNMBR) INNER JOIN RM00101 ON Sales_Orders_Master_File.CustomerNo = RM00101.CUSTNMBR
WHERE CUSTCLAS <> 'DTC' and [OrderStreamType]<>2 and Sales_Orders_Master_File.OrderStatusCode <> 15 AND Sales_Orders_Details.Itemtype <> 0
AND (DateShipped between cast (cast(datepart(year,getdate()) as char(4)) + '-' + '01-01'
as datetime) and cast (cast(datepart(year,getdate()) as char(4)) + '-' +
substring(convert(char(2),getdate(),101),1,2) + '-' + cast(datepart(day,getdate()) as char(2))
as datetime))
GROUP BY Year([DateShipped]) , Month([DateShipped]),DATENAME(month, [DateShipped]), CASE WHEN tblSALESDIVISIONS.DIVISION IS NULL THEN 'Zone' ELSE tblSALESDIVISIONS.DIVISION END,ISNULL( tblDistChannel.CHANNEL, 'Unassigned') ,
Case WHEN tblDistChannel.CUSTOMER IS NULL then RM00101.STMTNAME else
tblDistChannel.CUSTOMER END
ORIGINAL QUERY WITHOUT THE SUM FOR 2003. The Case statement in the WHERE Clause just gets the dateshipped between 1/1/2004 - todays date time.
SELECT
Year([DateShipped]) AS DYear, Month([DateShipped]) AS DMonth,DATENAME(month, [DateShipped]) AS 'Month Name'
,CASE WHEN tblSALESDIVISIONS.DIVISION IS NULL THEN 'Zone' ELSE tblSALESDIVISIONS.DIVISION END AS DIVISION,
ISNULL( tblDistChannel.CHANNEL, 'Unassigned') AS CHANNEL,
Case WHEN tblDistChannel.CUSTOMER IS NULL then RM00101.STMTNAME else
tblDistChannel.CUSTOMER END AS CUSTOMER,
sum(Sales_Orders_Details.OrderQuantity * ( Sales_Orders_Details.UnitPrice - Sales_Orders_Details.UnitDiscount )) as Gross
FROM ((Sales_Orders_Master_File INNER JOIN Sales_Orders_Details ON Sales_Orders_Master_File.SalesOrderNo = Sales_Orders_Details.SALESORDERNO) LEFT JOIN (tblDistChannel LEFT JOIN tblSALESDIVISIONS ON tblDistChannel.CHANNEL = tblSALESDIVISIONS.CHANNEL) ON Sales_Orders_Master_File.CustomerNo = tblDistChannel.CUSTNMBR) INNER JOIN RM00101 ON Sales_Orders_Master_File.CustomerNo = RM00101.CUSTNMBR
WHERE CUSTCLAS <> 'DTC' and [OrderStreamType]<>2 and Sales_Orders_Master_File.OrderStatusCode <> 15 AND Sales_Orders_Details.Itemtype <> 0
AND (DateShipped between cast (cast(datepart(year,getdate()) as char(4)) + '-' + '01-01'
as datetime) and cast (cast(datepart(year,getdate()) as char(4)) + '-' +
substring(convert(char(2),getdate(),101),1,2) + '-' + cast(datepart(day,getdate()) as char(2))
as datetime))
GROUP BY Year([DateShipped]) , Month([DateShipped]),DATENAME(month, [DateShipped]), CASE WHEN tblSALESDIVISIONS.DIVISION IS NULL THEN 'Zone' ELSE tblSALESDIVISIONS.DIVISION END,ISNULL( tblDistChannel.CHANNEL, 'Unassigned') ,
Case WHEN tblDistChannel.CUSTOMER IS NULL then RM00101.STMTNAME else
tblDistChannel.CUSTOMER END
QUERY I TRIED WITH NESTED SELECT BUT GOT SAME NUMBER ALL THE WAY THROUGH.
SELECT
Year([DateShipped]) AS DYear, Month([DateShipped]) AS DMonth,DATENAME(month, [DateShipped]) AS 'Month Name'
,CASE WHEN tblSALESDIVISIONS.DIVISION IS NULL THEN 'Zone' ELSE tblSALESDIVISIONS.DIVISION END AS DIVISION,
ISNULL( tblDistChannel.CHANNEL, 'Unassigned') AS CHANNEL,
Case WHEN tblDistChannel.CUSTOMER IS NULL then RM00101.STMTNAME else
tblDistChannel.CUSTOMER END AS CUSTOMER,
(SELECT sum(Sales_Orders_Details.OrderQuantity * ( Sales_Orders_Details.UnitPrice - Sales_Orders_Details.UnitDiscount ))
FROM ((Sales_Orders_Master_File INNER JOIN Sales_Orders_Details ON Sales_Orders_Master_File.SalesOrderNo = Sales_Orders_Details.SALESORDERNO) LEFT JOIN (tblDistChannel LEFT JOIN tblSALESDIVISIONS ON tblDistChannel.CHANNEL = tblSALESDIVISIONS.CHANNEL) ON Sales_Orders_Master_File.CustomerNo = tblDistChannel.CUSTNMBR) INNER JOIN RM00101 ON Sales_Orders_Master_File.CustomerNo = RM00101.CUSTNMBR
WHERE CUSTCLAS <> 'DTC' and [OrderStreamType]<>2 and Sales_Orders_Master_File.OrderStatusCode <> 15 AND Sales_Orders_Details.Itemtype <> 0
AND (DateShipped between cast (cast(datepart(year,getdate())-1 as char(4)) + '-' + '01-01'
as datetime) and cast (cast(datepart(year,getdate())-1 as char(4)) + '-12-31'
as datetime))
AND tblDistChannel.Channel = tblDistChannel.Channel
) AS Gross03,
sum(Sales_Orders_Details.OrderQuantity * ( Sales_Orders_Details.UnitPrice - Sales_Orders_Details.UnitDiscount )) as Gross
FROM ((Sales_Orders_Master_File INNER JOIN Sales_Orders_Details ON Sales_Orders_Master_File.SalesOrderNo = Sales_Orders_Details.SALESORDERNO) LEFT JOIN (tblDistChannel LEFT JOIN tblSALESDIVISIONS ON tblDistChannel.CHANNEL = tblSALESDIVISIONS.CHANNEL) ON Sales_Orders_Master_File.CustomerNo = tblDistChannel.CUSTNMBR) INNER JOIN RM00101 ON Sales_Orders_Master_File.CustomerNo = RM00101.CUSTNMBR
WHERE CUSTCLAS <> 'DTC' and [OrderStreamType]<>2 and Sales_Orders_Master_File.OrderStatusCode <> 15 AND Sales_Orders_Details.Itemtype <> 0
AND (DateShipped between cast (cast(datepart(year,getdate()) as char(4)) + '-' + '01-01'
as datetime) and cast (cast(datepart(year,getdate()) as char(4)) + '-' +
substring(convert(char(2),getdate(),101),1,2) + '-' + cast(datepart(day,getdate()) as char(2))
as datetime))
GROUP BY Year([DateShipped]) , Month([DateShipped]),DATENAME(month, [DateShipped]), CASE WHEN tblSALESDIVISIONS.DIVISION IS NULL THEN 'Zone' ELSE tblSALESDIVISIONS.DIVISION END,ISNULL( tblDistChannel.CHANNEL, 'Unassigned') ,
Case WHEN tblDistChannel.CUSTOMER IS NULL then RM00101.STMTNAME else
tblDistChannel.CUSTOMER END