Thread: Aggregate in Correlated SubQuery

Aggregate in Correlated SubQuery

From
"Niederland"
Date:
Before postgresql 8.1.5, I could do the following to find the first
lead that created a prospect in my application.

SELECT
  Lead.LeadID,
  Prospect.ProspectID
FROM
  Prospect INNER JOIN Lead USING (ProspectID)
WHERE
  Lead.CreationDate = (SELECT MIN(Lead.CreationDate) FROM Lead AS LL
WHERE LL.ProspectID = Lead.ProspectID)

With 8.1.5 this now generates:
ERROR: aggregates not allowed in WHERE clause
SQL state: 42803

Shouldn't aggregate functions still work within correlated subQueries?
I saw in the 8.1.5 release notes that this was disabled due to crashes
this caused in 8.1.X versions for Postgresql.  I have never experienced
this with queries similar to the above.


Re: Aggregate in Correlated SubQuery

From
"Niederland"
Date:
Sorry working to late at night.... Query works just a typo
the following works.

 WHERE
   Lead.CreationDate = (SELECT MIN(LL.CreationDate) FROM Lead AS LL
 WHERE LL.ProspectID = Lead.ProspectID)

sorry for the previous post,
Roger

Niederland wrote:
> Before postgresql 8.1.5, I could do the following to find the first
> lead that created a prospect in my application.
>
> SELECT
>   Lead.LeadID,
>   Prospect.ProspectID
> FROM
>   Prospect INNER JOIN Lead USING (ProspectID)
> WHERE
>   Lead.CreationDate = (SELECT MIN(Lead.CreationDate) FROM Lead AS LL
> WHERE LL.ProspectID = Lead.ProspectID)
>
> With 8.1.5 this now generates:
> ERROR: aggregates not allowed in WHERE clause
> SQL state: 42803
>
> Shouldn't aggregate functions still work within correlated subQueries?
> I saw in the 8.1.5 release notes that this was disabled due to crashes
> this caused in 8.1.X versions for Postgresql.  I have never experienced
> this with queries similar to the above.