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

Consulta Cursores

Estas en el tema de Consulta Cursores en el foro de SQL Server en Foros del Web. Buenas tardes. Mi nombre es Daniel y soy nuevo en el foro, tengo una consulta de SQL server, es un ejercicio que tengo que resolver ...
  #1 (permalink)  
Antiguo 23/12/2013, 11:06
 
Fecha de Ingreso: diciembre-2013
Mensajes: 4
Antigüedad: 10 años, 4 meses
Puntos: 0
Consulta Cursores

Buenas tardes. Mi nombre es Daniel y soy nuevo en el foro, tengo una consulta de SQL server, es un ejercicio que tengo que resolver y tengo un par de preguntas ya que nunca usè cursores, tablas temporales, entre otras y en este ejercicio me los pide, por favor si me pueden dar una mano ya que es un integrador que tengo que entregar a uno de mis superiores en el trabajo.

Utilizando las tablas Dim_Seccion y Fact_Emision realizar los siguiente puntos ( estas dos tablas están en la base de datos del trabajo ya creadas, contiene registros y campos ) :
a.Generar un proceso que , inserte en una tabla llamada Resumen_Secciones(esta tabla la tengo que crear nueva) los siguiente campos: Año y mes, Seccion_Key, Descripcion_Seccion, Prima.

Por cada inserción se debe imprimir un mensaje de la cantidad de registro que se están insertando para ese año y mes.
Solo se debe calcular para los años: 2006-01 , 2006-02, 2006-03 , luego de la inserción de los datos de cada mes guardar en una tabla temporal la sección con mayor prima para cada mes ( año,mes,seccion_key,descripcion_seccion y prima)
En el final de procedimiento listar los resultados de dicha tabla.
Es obligatorio el uso de cursores.

La parte de crear la nueva tabla Resumen_Secciones ya la tengo hecha, despues me confundo en la parte donde debo crear el cursor y luego realizar los print de @@rowcount e insertar los registros para cada mes y año ( como se leccionar los años y mes ) y por ultimo insertarlo en la tabla temporar, sè que se generar con @tabla.

Si alguien por favor me puede dar una mano de como se tendria que componer la consulta o lo basico.
Muchas gracias y buenas fiestas !
  #2 (permalink)  
Antiguo 23/12/2013, 11:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta Cursores

es para tu trabajo??

investiga sobre cursores
tablas temporales
las funciones @@rowcount
las funciones de fecha(datediff, datepart)

y todo eso esta en google, como comentario los cursores no son recomendados, pero creo que aqui te los estan pidiendo para saber que tanto sabes de sql server, no seria mas facil que dijeras no se como usar esto y aquello???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 23/12/2013, 21:42
 
Fecha de Ingreso: diciembre-2013
Mensajes: 4
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Consulta Cursores

Gracias por la respuesta. Estoy en la parte de capacitacion de un trabajo nuevo y me estan capacitando en sql ... ya estuve buscando informacion de tablas temporales, @@rowcount y demas, el problema que tengo es ordenar la consulta. Se me hace un lio cuando tengo que agregar procesos, cursores, crear tablas temporales, etc, no se como ubicarlos. Por el momento estuve viendo y llegue hasta esto ... no se si està bien

Código SQL:
Ver original
  1. CREATE PROCEDURE Integrador
  2. AS
  3. CREATE TABLE Resumen_Secciones ( AñoyMes datetime, Seccion_Key INT, Descripcion_Seccion VARCHAR(30),
  4. Prima INT)
  5. DECLARE@AñoyMes,
  6. DECLARE @Seccion_Key,
  7. DECLARE @Descripcion_Seccion,
  8. DECLARE @Prima
  9. DECLARE cursor_integrador cursor FOR
  10. SELECT  AñoyMes,Seccion_Key,Descripcion_Seccion,Prima
  11. FROM Resumen_Secciones
  12. WHERE AñoyMes IS (201301,201302,201303)
  13. OPEN cursor_integrador
  14. fetch NEXT FROM cursor_integrador
  15. INTO @AñoyMes,@Seccion_Key,@Descripcion_Seccion,@Prima
  16. while @@fetch_status=0
  17. BEGIN
  18. INSERT Resumen_Seccion (
Muchas gracias y saludos !

Última edición por gnzsoloyo; 24/12/2013 a las 05:21
  #4 (permalink)  
Antiguo 24/12/2013, 02:33
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Consulta Cursores

Hola Daniel,

Después de cada inserción hay que imprimir el número de las filas insertadas utilizando la instrucción
Código SQL:
Ver original
  1. Print @@RowCount;

La creación de la tabla Resumen_Secciones no debe ser parte del procedimiento porque el procedimiento debe ser ejecutado varias veces, y la table debe se creada solamente una vez.

La instrucción Declare Cursor debe referir a las tablas Dim_Seccion y Fact_Emision que son el recurso de los datos.

Supongo que no existe una columna cuyo nombre es AñoyMes y debes calcularla así (dentro de un Select):
Código SQL:
Ver original
  1. 100*YEAR(Fact_Emision.Fecha)+MONTH(Fact_Emision.Fecha)

Es muy recomendable evitar caracteres con acentos dentro del código (por ejemplo- AñoyMes).

Me parece que el filtro de las fechas debe ser un parámetro para que puedas ejecutar el procedimiento cada vez con otro filtro.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #5 (permalink)  
Antiguo 24/12/2013, 08:34
 
Fecha de Ingreso: diciembre-2013
Mensajes: 4
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Consulta Cursores

Cita:
Iniciado por GeriReshef Ver Mensaje
Hola Daniel,

Después de cada inserción hay que imprimir el número de las filas insertadas utilizando la instrucción
Código SQL:
Ver original
  1. Print @@RowCount;

La creación de la tabla Resumen_Secciones no debe ser parte del procedimiento porque el procedimiento debe ser ejecutado varias veces, y la table debe se creada solamente una vez.

La instrucción Declare Cursor debe referir a las tablas Dim_Seccion y Fact_Emision que son el recurso de los datos.

Supongo que no existe una columna cuyo nombre es AñoyMes y debes calcularla así (dentro de un Select):
Código SQL:
Ver original
  1. 100*YEAR(Fact_Emision.Fecha)+MONTH(Fact_Emision.Fecha)

Es muy recomendable evitar caracteres con acentos dentro del código (por ejemplo- AñoyMes).

Me parece que el filtro de las fechas debe ser un parámetro para que puedas ejecutar el procedimiento cada vez con otro filtro.
Muchas gracias por la respuesta. Voy a seguir investigando, cualquier cosa vuelvo a consultar por aca ! Gracias por la info y buenas fiestas !

Etiquetas: campo, cursores, procedimiento, registro, server, sql, tabla
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 01:57.