Error with having clause Error with having clause sql sql

Error with having clause


MONTH(Date) is not a column you're grouped by, so it can't appear in having clause.You can do like that:

select SUM (Bill) from ProductSaleReportwhere MONTH(Date) between 1 and 3group by PCI 

Other way is

select SUM (Bill) from ProductSaleReport group by PCI, MONTH(Date) having MONTH(Date) between 1 and 3

but keep in mind that you will get result grouped by month as well as by PCI.

The difference between WHERE and HAVING explained here: Using 'case expression column' in where clause


Use WHERE to filter before group by

HAVING is used to filter data after the group by occurs

select SUM (Bill) -- comment: you need to add the PCI column since you use it in the group by right?from ProductSaleReport WHERE MONTH(Date) between 1 and 3group by PCI 


MONTH(Date) is not a column you SELECTed, so it can't appear in your HAVING clause.

If you meant to only SUM the Bills from rows where the month is between 1 and 3, then that is a WHERE clause, not a HAVING clause.

If all the rows in each PCI group have the same MONTH(Date), then you can add MONTH(Date) to your SELECT clause in order to use it in the HAVING clause.