error en sql

29/09/2006 - 09:57 por Oscar | Informe spam
Hola

Quiero hacer un select que me devuelve lo siguiente:

Ejercicio Enero Febrero Marzo Abril Mayo Junio
2003 5 6 0 12 5 1
2004 1 2 .


Y he hecho la siguiente sql, pero me falla al poner el COUNT(ACC_CODIGO)
DENTRO DEL CASE. Qué puedo hacer?

SELECT YEAR(ACC_FEC_CREACION_CLIENTE) AS EJERCICIO, ENERO = SUM(CASE
WHEN MONTH(ACC_FEC_CREACION_CLIENTE)
LIKE '01' THEN COUNT(ACC_CODIGO) ELSE 0 END)
FROM CC_AVISOS
GROUP BY YEAR(ACC_FEC_CREACION_CLIENTE)

Saludos, Oscar
 

Leer las respuestas

#1 Ivan Pascual
29/09/2006 - 10:50 | Informe spam
Hola Oscar,
No se puede hacer funciones de agregado en una clausula CASE, tu estas
poniendo un Count dentro de un Case.
Yo lo haria anidando unions, total siempre seran 12 unions.
La select resultante es tal que asi...

Select EJERCICIO, Enero = Sum(Enero), Febrero = Sum(Febrero)
From (
select YEAR(ACC_FEC_CREACION_CLIENTE) AS EJERCICIO, Enero =
COUNT(ACC_CODIGO), Febrero = 0
FROM CC_AVISOS
Where MONTH(ACC_FEC_CREACION_CLIENTE) = '1'
Group by YEAR(ACC_FEC_CREACION_CLIENTE)
union
select YEAR(ACC_FEC_CREACION_CLIENTE) AS EJERCICIO, Enero = 0, Febrero =
COUNT(ACC_CODIGO)
FROM CC_AVISOS
Where MONTH(ACC_FEC_CREACION_CLIENTE) = '2'
Group by YEAR(ACC_FEC_CREACION_CLIENTE)
) A
Group by EJERCICIO

A mi se me ha ocurrido esta forma, quiza alguien te pueda decir otra, pero
esta funciona.
Espero te sirva.
Saludos.

Ivan Pascual

"Oscar" escribió en el mensaje
news:
Hola

Quiero hacer un select que me devuelve lo siguiente:

Ejercicio Enero Febrero Marzo Abril Mayo Junio
2003 5 6 0 12 5 1
2004 1 2 .


Y he hecho la siguiente sql, pero me falla al poner el COUNT(ACC_CODIGO)
DENTRO DEL CASE. Qué puedo hacer?

SELECT YEAR(ACC_FEC_CREACION_CLIENTE) AS EJERCICIO, ENERO = SUM(CASE
WHEN MONTH(ACC_FEC_CREACION_CLIENTE)
LIKE '01' THEN COUNT(ACC_CODIGO) ELSE 0 END)
FROM CC_AVISOS
GROUP BY YEAR(ACC_FEC_CREACION_CLIENTE)

Saludos, Oscar

Preguntas similares