domingo, maio 08, 2005

Cannot perform an aggregate function on an expression containing an aggregate or a subquery

Deparei hoje com este erro quando estava a construir um mapa de analise para um cliente. Precisava somar todos os valores decorrentes de um conjunto de condicionantes (Case when end) mas n MS Sql não é possivel somar agregações. Não envio a query toda para aqui, pois é muito grande e complicada, mas dou um exemplo daquilo que falo:

select avg(count(ip)) from pagehits where [month] = 2 group by ip daria o seguinte erro "Cannot perform an aggregate function on an expression containing an aggregate or a subquery" e a unica maneira de dar a volta é usar o que se chama "Tabelas derivadas".

select avg(ipcount) from (select count(ip) ipcount from pagehits where [month] = 2 group by ip) as sub

Devo dizer que não existe muita informação quando se trata de queries bem mais complicadas.

Sem comentários: