I think this is common, is it?
If you have a table with SALES {Customer_ID, Price, SmallDateTime date}
. How do you report all sales per month?
SELECT YEAR(date) as SalesYear,
MONTH(date) as SalesMonth,
SUM(Price) AS TotalSales
FROM Sales
GROUP BY YEAR(date), MONTH(date)
ORDER BY YEAR(date), MONTH(date)
SELECT CONVERT(CHAR(7), SmallDateTime, 120) as Year_Month,
SUM(Price)
FROM Sales
GROUP BY CONVERT(CHAR(7), SmallDateTime, 120)
ORDER BY Year_Month
Try this
SELECT A.CAL_YEAR AS YEAR ,A.CAL_WEEK AS WEEK,SUM(B.SUM_OF_PROFIT) as profit FROM
CALANDER A,SALES_FACT B WHERE A.DATE_ID=B.DATE_ID
GROUP BY A.CAL_YEAR,A.CAL_WEEK;
Another solution is to calculate the first day of the month
Select DateAdd(d,DateDiff(d,0,[Date])-DatePart(d,[Date])+1,0)
, Sum( Price )
From Sales
Group By DateAdd(d,DateDiff(d,0,[Date])-DatePart(d,[Date])+1,0)