none
AYUDA RRS feed

  • Pregunta

  • QUIEN ME PUEDE AYUDAR ESTE PROBLEMA 

    ES CON UNA BASE DE DATOS DE NORTHWIND


    crear un procedimiento almacenado que devuelva los montos de las categorias de los años especificados el procedimiento almacenado debe permitir ingresar cuatro fechas diferentes años .


    • Editado Victor1199 lunes, 30 de julio de 2018 18:26
    lunes, 30 de julio de 2018 18:01

Respuestas

  • aunque no entiendo lo que quieres por que no das mucha informacion yo te recomiendo el Between osea entre

    ejemplo

    @Fecha_Inicio Date,
    @fecha_Fin Date
    as
    select (A.Apellido_Paterno + ' ' + A.Apellido_materno + ' ' + A.Nombre) as nombre,a.Termino,
    a.transcripcion_credito_oficial,A.transcripcion_ley_217,
    A.Num_Estudiante,a.Telefono_Residencial,A.Telefono_Celular,
    (A.Urbanizacion_Barrio + '  ' + A.Numero_Buzon + '  ' + A.Calle_Sector + '  ' + A.Pueblo_Ciudad + '  ' + A.Codigo_Postal) as Direccion,
    A.Fecha_Orientacion,A.Orientado_Por,A.Atendido_Por,a.Fecha_Admision,
    (C.Apellido_Paterno + ' ' + c.Nombre) as Nombre_Empleado,
    D.Nombre_Institucion,D.Nombre_Recinto,D.Direccion_Postal,
    (D.Pueblo_Postal + ' ' + D.Pais_Postal + ' ' + D.Codigo_Postal_Postal) as Direccion_I
     from estudiantes_Tabla A
     left join Matriculas_Tabla B on a.Num_Estudiante=B.Num_Estudiante
     left join Empleados_Tabla C on a.Orientado_por=C.Num_Empleado 
     LEFT JOIN Configuracion_Sistema_Tabla D on A.numero=D.numero
     where A.Fecha_Orientacion BETWEEN @Fecha_Inicio AND @fecha_Fin
     
    mira el Where 

    lunes, 30 de julio de 2018 18:10
  • Hola Victor1199:

    Tu procedimiento puede ser tal que así:

    create procedure sp_AgrupadoNorthWind (@anual1 int = 0, @anual2 int = 0, @anual3 int = 0, @anual4 int = 0)
    /*declaración de parametros por defecto 
    se puede llamar como:
    exec sp_AgrupadoNorthWind 
    exec sp_AgrupadoNorthWind @anual1 = 1998 --el numero de parametros que se quiera, por nombre y valor
    exec sp_AgrupadoNorthWind 1998,1999 -- el numero de parametros por valor
    exec sp_AgrupadoNorthWind 1999,1998,1997,1996
    */
    as
    
    	/* si al procedure no se le pasan parametros los inicializo como año actual, y anteriores */
    if (@anual1=0)
    	 set @anual1 = 1999;
    if (@anual2 = 0)
    	set @anual2 = @anual1 - 1;
    if (@anual3 = 0)
    	set @anual3 = @anual2 - 1;
    if (@anual4 = 0)
    	set @anual4 = @anual3 - 1;
    
    	/* utilizamos las funciones de agrupación sum y extraemos el año mediante year */
    SELECT SUM(c.Quantity) as cantidad,
           YEAR(o.OrderDate) AS [anual],cat.CategoryName
           
    FROM [Order Details] c
         INNER JOIN [Orders] o ON o.OrderID = c.OrderID
         INNER JOIN Customers cd ON o.CustomerID = cd.CustomerID
    	 inner join Products p on c.ProductID = p.ProductID
    	 inner join Categories cat on p.CategoryID = cat.CategoryID
    
    where 
    	YEAR(o.OrderDate) in (@anual1,@anual2,@anual3, @anual4) /*todas las fechas de orderDate tienen que tener los años parametrizados */
    GROUP BY 
             YEAR(o.OrderDate), cat.CategoryName 
    order by CategoryName
    return
    		
    	
    

    Espero te ayude

    Un saludo

    sábado, 11 de agosto de 2018 7:16

Todas las respuestas

  • Antes de intentar darle una respuesta, debo aclarar, que ni en este foro y en muchos otros, se resuelven peticiones a la medida.

    ¿Que avance lleva?

    ¿Cuales son su tablas?

    ¿Que nivel de conocimientos tiene en SQL?

    ¿Es un trabajo escolar?

    • Propuesto como respuesta Enrique AA jueves, 2 de agosto de 2018 2:14
    lunes, 30 de julio de 2018 18:07
  • aunque no entiendo lo que quieres por que no das mucha informacion yo te recomiendo el Between osea entre

    ejemplo

    @Fecha_Inicio Date,
    @fecha_Fin Date
    as
    select (A.Apellido_Paterno + ' ' + A.Apellido_materno + ' ' + A.Nombre) as nombre,a.Termino,
    a.transcripcion_credito_oficial,A.transcripcion_ley_217,
    A.Num_Estudiante,a.Telefono_Residencial,A.Telefono_Celular,
    (A.Urbanizacion_Barrio + '  ' + A.Numero_Buzon + '  ' + A.Calle_Sector + '  ' + A.Pueblo_Ciudad + '  ' + A.Codigo_Postal) as Direccion,
    A.Fecha_Orientacion,A.Orientado_Por,A.Atendido_Por,a.Fecha_Admision,
    (C.Apellido_Paterno + ' ' + c.Nombre) as Nombre_Empleado,
    D.Nombre_Institucion,D.Nombre_Recinto,D.Direccion_Postal,
    (D.Pueblo_Postal + ' ' + D.Pais_Postal + ' ' + D.Codigo_Postal_Postal) as Direccion_I
     from estudiantes_Tabla A
     left join Matriculas_Tabla B on a.Num_Estudiante=B.Num_Estudiante
     left join Empleados_Tabla C on a.Orientado_por=C.Num_Empleado 
     LEFT JOIN Configuracion_Sistema_Tabla D on A.numero=D.numero
     where A.Fecha_Orientacion BETWEEN @Fecha_Inicio AND @fecha_Fin
     
    mira el Where 

    lunes, 30 de julio de 2018 18:10
  • Hola Victor1199:

    Tu procedimiento puede ser tal que así:

    create procedure sp_AgrupadoNorthWind (@anual1 int = 0, @anual2 int = 0, @anual3 int = 0, @anual4 int = 0)
    /*declaración de parametros por defecto 
    se puede llamar como:
    exec sp_AgrupadoNorthWind 
    exec sp_AgrupadoNorthWind @anual1 = 1998 --el numero de parametros que se quiera, por nombre y valor
    exec sp_AgrupadoNorthWind 1998,1999 -- el numero de parametros por valor
    exec sp_AgrupadoNorthWind 1999,1998,1997,1996
    */
    as
    
    	/* si al procedure no se le pasan parametros los inicializo como año actual, y anteriores */
    if (@anual1=0)
    	 set @anual1 = 1999;
    if (@anual2 = 0)
    	set @anual2 = @anual1 - 1;
    if (@anual3 = 0)
    	set @anual3 = @anual2 - 1;
    if (@anual4 = 0)
    	set @anual4 = @anual3 - 1;
    
    	/* utilizamos las funciones de agrupación sum y extraemos el año mediante year */
    SELECT SUM(c.Quantity) as cantidad,
           YEAR(o.OrderDate) AS [anual],cat.CategoryName
           
    FROM [Order Details] c
         INNER JOIN [Orders] o ON o.OrderID = c.OrderID
         INNER JOIN Customers cd ON o.CustomerID = cd.CustomerID
    	 inner join Products p on c.ProductID = p.ProductID
    	 inner join Categories cat on p.CategoryID = cat.CategoryID
    
    where 
    	YEAR(o.OrderDate) in (@anual1,@anual2,@anual3, @anual4) /*todas las fechas de orderDate tienen que tener los años parametrizados */
    GROUP BY 
             YEAR(o.OrderDate), cat.CategoryName 
    order by CategoryName
    return
    		
    	
    

    Espero te ayude

    Un saludo

    sábado, 11 de agosto de 2018 7:16