Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

utilizacion del case en query

Estas en el tema de utilizacion del case en query en el foro de SQL Server en Foros del Web. Que tal, tengo una tabla Legajos lega_legajo(PK) lega_provincia lega_fecha_ingreso y otra tabla provincia prov_codigo(pk) prov_descripcion Necesito mostrar para todas las provincias:codigo,descripción, cantidad de legajos que ...
  #1 (permalink)  
Antiguo 08/06/2009, 17:18
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 4 meses
Puntos: 0
utilizacion del case en query

Que tal, tengo una tabla

Legajos

lega_legajo(PK)
lega_provincia
lega_fecha_ingreso

y otra tabla

provincia

prov_codigo(pk)
prov_descripcion


Necesito mostrar para todas las provincias:codigo,descripción, cantidad de legajos que ingresaron a la empresa de esa prov en el año 2001 y cantidad de legajos que ingresaron a la empresa de esa prov en el año 2002.

Entonces yo probé con

select prov_codigo,prov_descripcion,case when (year(lega_fecha_ingreso)='2001') then count(*) end,case when (year(lega_fecha_ingreso)='2002') then count(*) end
from Legajos,Provincia
where lega_provincia=prov_codigo
group by prov_codigo,prov_descripcion,lega_provincia,lega_f echa_ingreso

pero no tuve los resultados esperados ya que por cada provincia me muestra 2 filas, y yo quiero que quede en una. O sea me esta quedando

'Codigo' 'Descripcion' 'Cant ingresados en el 2001' 'Cant ingresados en el 2002'
1 bs as 1 NULL
1 ba as NULL 1

y yo quiero que me quede una única fila por provincia:


'Codigo' 'Descripcion' 'Cant ingresados en el 2001' 'Cant ingresados en el 2002'
1 bs as 1 1


Alguien me puede decir como puedo lograr lo que quiero? se puede lograr con un case?? (no quiero usar subselects, ya se como solucionarlo de esa forma pero estaba buscando una solución de otro tipo)...un saludo

Última edición por juanf03; 08/06/2009 a las 17:34
  #2 (permalink)  
Antiguo 08/06/2009, 20:38
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: utilizacion del case en query

Debes hacer un CASE con SUM por cada año

2001 = SUM(CASE WHEN year(lega_fecha_ingreso)= 2001 THEN 1 END),
2002 = SUM(CASE WHEN year(lega_fecha_ingreso)= 2002 THEN 1 END),
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:55.