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 SELECT
ed, so it can't appear in your HAVING
clause.
If you meant to only SUM
the Bill
s 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.