Case Statement with Group By
571744Nov 14 2007 — edited Nov 14 2007Hello,
I am trying to build a query that returns the 3 months of a quarter. Below are the two case statements that I am trying to use. I am getting a "Not a group by expression" in the first case statement, and a "nota a single-group group function in the second. Any help with this would be appreciated.
Thanks, sck10
SELECT Trev.Revenue_Year,
CASE
WHEN Trev.Revenue_Name = 'Jan' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
WHEN Trev.Revenue_Name = 'Apr' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
WHEN Trev.Revenue_Name = 'Jul' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
WHEN Trev.Revenue_Name = 'Oct' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
ELSE SUM(0)
END AS Month_01,
CASE
WHEN Trev.Revenue_Name = 'Feb' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
WHEN Trev.Revenue_Name = 'May' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
WHEN Trev.Revenue_Name = 'Aug' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
WHEN Trev.Revenue_Name = 'Nov' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
ELSE SUM(0)
END AS Month_02,
CASE
WHEN Trev.Revenue_Name = 'Mar' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
WHEN Trev.Revenue_Name = 'Jun' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
WHEN Trev.Revenue_Name = 'Sep' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
WHEN Trev.Revenue_Name = 'Dec' THEN Round(SUM(COALESCE(Trev.Revenue, 0)), 1)
ELSE SUM(0)
END AS Month_03
FROM Stage_Report_Revenue Trev
GROUP BY Trev.Revenue_Year;
SELECT Trev.Revenue_Year,
SUM(CASE
WHEN Trev.Revenue_Name = 'Jan' THEN COALESCE(Trev.Revenue, 0)
WHEN Trev.Revenue_Name = 'Apr' THEN COALESCE(Trev.Revenue, 0)
WHEN Trev.Revenue_Name = 'Jul' THEN COALESCE(Trev.Revenue, 0)
WHEN Trev.Revenue_Name = 'Oct' THEN COALESCE(Trev.Revenue, 0)
ELSE 0
END) AS Month_01,
SUM(CASE
WHEN Trev.Revenue_Name = 'Feb' THEN COALESCE(Trev.Revenue, 0)
WHEN Trev.Revenue_Name = 'May' THEN COALESCE(Trev.Revenue, 0)
WHEN Trev.Revenue_Name = 'Aug' THEN COALESCE(Trev.Revenue, 0)
WHEN Trev.Revenue_Name = 'Nov' THEN COALESCE(Trev.Revenue, 0)
ELSE 0
END) AS Month_02,
SUM(CASE
WHEN Trev.Revenue_Name = 'Mar' THEN COALESCE(Trev.Revenue, 0)
WHEN Trev.Revenue_Name = 'Jun' THEN COALESCE(Trev.Revenue, 0)
WHEN Trev.Revenue_Name = 'Sep' THEN COALESCE(Trev.Revenue, 0)
WHEN Trev.Revenue_Name = 'Dec' THEN COALESCE(Trev.Revenue, 0)
ELSE SUM(0)
END) AS Month_03
FROM Stage_Report_Revenue Trev
GROUP BY Trev.Revenue_Year;