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

Select ... Union all select ...

Estas en el tema de Select ... Union all select ... en el foro de Bases de Datos General en Foros del Web. Tengo una duda... Tengo una tabla como esta Código: +-------+-------------+--------------+ | GRUPO | FECHA_PAGO | KM_AFECTADO | +-------+-------------+--------------+ | 6KG91 | 01/01/2007 | 0.23 | ...
  #1 (permalink)  
Antiguo 08/02/2010, 17:58
 
Fecha de Ingreso: junio-2007
Ubicación: Mérida, Yucatán, México
Mensajes: 94
Antigüedad: 16 años, 10 meses
Puntos: 1
Select ... Union all select ...

Tengo una duda...

Tengo una tabla como esta

Código:
+-------+-------------+--------------+
| GRUPO | FECHA_PAGO  | KM_AFECTADO  |
+-------+-------------+--------------+
| 6KG91 | 01/01/2007  | 0.23         |
+------------------------------------+
| 6KG91 | 01/01/2007  | 0.31         |
+------------------------------------+
| 6KG91 | 01/02/2007  | 0.45         |
+------------------------------------+
| 6JCV1 | 01/01/2007  | 1.03         |
+------------------------------------+
| 6JCV1 | 01/02/2007  | 0.23         |
+------------------------------------+
| 6JCV1 | 01/02/2007  | 0.31         |
+------------------------------------+
| 6JCV1 | 01/02/2007  | 0.45         |
+------------------------------------+
| 6JCV1 | 01/02/2007  | 2.87         |
+------------------------------------+
Lo que necesito es sumar los km_afectado por cada mes dentro del año 2007... hasta ahí no hay problema...

Código:
SELECT GRUPO, SUM( KM_AFECTADO ) as KM_AFECTADO FROM PREDIOS
WHERE DATEPART( yyyy, FECHA_PAGO ) = 2007 AND DATEPART( m, FECHA_PAGO ) = 1
GROUP BY GRUPO

+-------+--------------+
| GRUPO | KM_AFECTADO  |
+-------+--------------+
| 6KG91 | 0.54         |
+----------------------+
| 6JCV1 | 1.03         |
+----------------------+
El problema es que yo necesito hacer por cada mes, como esto...

Código:
+-------+--------------+-----+
| GRUPO | KM_AFECTADO  | MES |
+-------+--------------+-----+
| 6KG91 | 0.54         | 1   |
+----------------------+-----+
| 6JCV1 | 1.03         | 1   |
+----------------------+-----+
| 6KG91 | 0.45         | 2   |
+----------------------+-----+
| 6JCV1 | 3.86         | 2   |
+----------------------+-----+
Con una columna que me diga en que mes es la suma... pero si lo agrupo por fecha, la suma es por dia y no por mes...

pensé en usar
Código:
SELECT GRUPO, SUM( KM_AFECTADO ) as KM_AFECTADO FROM PREDIOS
WHERE DATEPART( yyyy, FECHA_PAGO ) = 2007 AND DATEPART( m, FECHA_PAGO ) = 1
GROUP BY GRUPO
UNION ALL
SELECT GRUPO, SUM( KM_AFECTADO ) as KM_AFECTADO FROM PREDIOS
WHERE DATEPART( yyyy, FECHA_PAGO ) = 2007 AND DATEPART( m, FECHA_PAGO ) = 2
GROUP BY GRUPO
UNION ALL
SELECT GRUPO, SUM( KM_AFECTADO ) as KM_AFECTADO FROM PREDIOS
WHERE DATEPART( yyyy, FECHA_PAGO ) = 2007 AND DATEPART( m, FECHA_PAGO ) = 3
GROUP BY GRUPO

+-------+--------------+
| GRUPO | KM_AFECTADO  |
+-------+--------------+
| 6KG91 | 0.54         |
+----------------------+
| 6JCV1 | 1.03         |
+----------------------+
| 6KG91 | 0.45         |
+----------------------+
| 6JCV1 | 3.86         |
+----------------------+
Pero no puedo sacar de qué mes son... se supone que hay meses en que no hay registros...

les agradecería su ayuda de antemano.. lo que no quiero es hacer una consulta por cada mes separado...

saludos y muchas gracias!!
  #2 (permalink)  
Antiguo 08/02/2010, 18:21
 
Fecha de Ingreso: junio-2007
Ubicación: Mérida, Yucatán, México
Mensajes: 94
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Select ... Union all select ...

jajjajaj ... muchas gracias de todas formas...

encontré la solución...

select grupo, datepart( m, fecha_pago) as mes, sum(km_afectado) as km_afectadofrom predios
where datepart( yyyy, fecha_pago) = 2007
group by poise, datepart( m, fecha_pago)

Etiquetas: select, union
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 08:09.