Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/10/2011, 09:52
Avatar de rafaely2011
rafaely2011
 
Fecha de Ingreso: septiembre-2011
Ubicación: Sancti Spiritus
Mensajes: 10
Antigüedad: 12 años, 7 meses
Puntos: 0
Crear consulta MSSQL que agrupe los datos segun parametro

Hola de ante manos gracias por permitirme formar parte de esta comunidad tan buena

Mi problema consiste en crear una consulta que me devuelva la cantidad de recorridos que ha realizado un agente por ruta yo cree una Procedimiento almacendado pero no logro que me lo de agrupado por agente y acantidad total por ruta

Código:
ALTER PROCEDURE [dbo].[ar_Graf]
@ruta numeric
AS

CREATE TABLE #temp
(
nombre varchar(50),
ruta numeric,
cantidad numeric

)

INSERT INTO #temp


SELECT     ar_Tripulaciones.nombre, ar_rutas.ruta, COUNT(ar_rutas.idchofer) AS cantidad
FROM         ar_rutas RIGHT OUTER JOIN
                      ar_Tripulaciones ON ar_rutas.idchofer = ar_Tripulaciones.id
GROUP BY ar_rutas.idchofer, ar_rutas.ruta, ar_Tripulaciones.nombre

UNION ALL

SELECT     ar_Tripulaciones.nombre, ar_rutas.ruta, COUNT(ar_rutas.idjefe) AS cantidad
FROM         ar_rutas RIGHT OUTER JOIN
                      ar_Tripulaciones ON ar_rutas.idjefe = ar_Tripulaciones.id
GROUP BY ar_rutas.idjefe, ar_rutas.ruta, ar_Tripulaciones.nombre

UNION ALL


SELECT     ar_Tripulaciones.nombre, ar_rutas.ruta, COUNT(ar_rutas.idescolta) AS cantidad
FROM         ar_rutas RIGHT OUTER JOIN
                      ar_Tripulaciones ON ar_rutas.idescolta = ar_Tripulaciones.id
GROUP BY ar_rutas.idescolta, ar_rutas.ruta, ar_Tripulaciones.nombre

UNION ALL


SELECT     ar_Tripulaciones.nombre, ar_rutas.ruta, COUNT(ar_rutas.idcajero) AS cantidad
FROM         ar_rutas RIGHT OUTER JOIN
                      ar_Tripulaciones ON ar_rutas.idcajero = ar_Tripulaciones.id
GROUP BY ar_rutas.idcajero, ar_rutas.ruta, ar_Tripulaciones.nombre


SELECT nombre, cantidad ,ruta
FROM #temp
WHERE ruta= @ruta
ORDER BY nombre
a por supesto la estructura de las tablas afectadas

Tabla ar_rutas donde estan los recorridos(rutas) realizados

Código:
CREATE TABLE [dbo].[ar_rutas](
	[codigo] [int] NOT NULL,
	[ruta] [int] NULL,
	[idchofer] [int] NULL,
	[idjefe] [int] NULL,
	[idescolta] [int] NULL,
	[idcajero] [int] NULL,
	[fecha] [datetime] NULL
) ON [PRIMARY]
Tabla ar_Tripulaciones que es donde estan los agentes

Código:
CREATE TABLE [dbo].[ar_Tripulaciones](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[nombre] [varchar](70) NULL,
	[cargo] [varchar](50) NULL,
	[activo] [int] NULL,
	[asignado] [int] NULL
) ON [PRIMARY]
hasta el momneto con lo que tengo creado me muestra

nombre | cantidad |
_________________
nombre 1| 5 |
nombre 1| 4 |
nombre 2| 1 |
nombre 2| 2 |

esto pasa porque cada agente puede haber echo un recorrido como cajero y los otros como chofer y por eso me lo pone separado y lo que quiero es mostrarlo todo total no importa como que lo haya echo

en si lo que quiero es que me muestra todos los nombres de los agentes y al lado la cantidad de veces que salio al recorido teniendo en cuenta el paramtro que yo le pase al SP por ejemplo @ruta = 1 pues entonces me muestre

nombre | cantidad |
_________________
nombre 1 | 5 |
nombre 2 | 2 |
nombre 3 | 1 |