none
Ciclos SQL RRS feed

  • Pregunta

  • Hola que tal, tengo un problema tengo unos select y estoy almacenandolos en unas tablas temporales:

    SELECT fechaOperacion,mesaCambios,AreaComercial,Contraloria,administracionRiesgos,cumplimiento,facturaGenerada INTO #Operacion    

    FROM [fx].[Operacion] With(nolock) WHERE (cast(fechaCreacion as date) between '20160108' and '20170208') and idPortafolio = 'FX_01'  

       SELECT idOperacion,conciliado INTO #Recibe FROM [fx].[OperacionDetalle]With(nolock)   

     WHERE (cast(fechaCreacion as date) between '20160108' and '20170208')  and idPortafolio = 'FX_01'  and recibeEntrega='R'  

     SELECT idOperacion,conciliado INTO #Entrega FROM [fx].[OperacionDetalle]With(nolock)    

    WHERE (cast(fechaCreacion as date) between '20160108' and '20170208')  and idPortafolio = 'FX_01' and recibeEntrega='E'

    Lo que quiero es que estos select me arrojan N numero de resultados quiero que pasen por unos if cada registro y me los este mostrando como se van procesando, estos son los if. 

    IF (@ValidandoLimites>0)
    	BEGIN
    		SET @idEstatus=2
    	END
    	ELSE
    	BEGIN
    		IF (@Recibe>0 or @Entrega>0)
    			BEGIN
    				SET @idEstatus=5
    
    				IF EXISTS(SELECT * FROM #Recibe With(nolock)WHERE conciliado=0)--WHERE conciliado<>1)
    				BEGIN
    					SET @idEstatus=3
    				END
    				ELSE
    				BEGIN
    					IF EXISTS(SELECT * FROM #Entrega With(nolock)WHERE conciliado=0)--WHERE conciliado<>1)
    					BEGIN
    						SET @idEstatus=4
    					END
    				END
    			END
    			ELSE
    			BEGIN
    				SET @idEstatus=1
    			END
    	END

    y al final lleguen a este Select que es el que me muestra los datos ya procesados.

    	IF (@idEstatus <> 5)
    	BEGIN
    			SELECT 
    	(SELECT idOperacion FROM #Recibe) as Deal,
    	'FX_01' as Portafolio,
    	@Estatus as Estatus,
    	REPLACE(CONVERT(VARCHAR(20),CONVERT(decimal (18,2),@idEstatus/5.0)*100),'.00','') + '%' as Porcentaje,
    	CASE WHEN ISNULL((SELECT facturaGenerada FROM #Operacion),0)=1 THEN 'SI' ELSE 'NO' END as Factura,
    	(SELECT fechaOperacion FROM #Operacion) as fechaOperacion
    	END 

    si me pueden ayudar estaria muy agradecido.

    miércoles, 15 de febrero de 2017 23:57

Respuestas

  • Por ello te comentaba que requerimos de mayor información,  que estas obteniendo actualmente y que esperas como resultado inicial para poder ofrecerte una solución alternativa, aunque de la forma que estas planteando el problema tu comentas que quieres recorrer el resultado de una consulta, fila por fila, o al menos eso es lo que estoy comprendiendo, y esto solo se puede lograr con cursores (  según mi experiencia )...


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    • Marcado como respuesta Jorge Arrieta lunes, 20 de febrero de 2017 21:35
    jueves, 16 de febrero de 2017 21:10

Todas las respuestas

  • Hola:

    Lo que quieras hacer es recorrer el resultado de la consulta, lo puedes lograr con un CURSOR ( tambien te dejo una liga de mi blog.

    Considero que debes detallar un poco mas que es lo que tienes ahorita y que esperas obtener como resultado final, porque sinceramente yo no entiendo algunas cosas como @ValidandoLimites, @Recibe, @Entrega de tu segundo bloque de codigo y @Estatus de tu tercer bloque.

    Como van a pasar las filas de los resultados de tu primer bloque de codigo en los IFs del segundo??

    Para que deseas imprimir el resultado de cada procesamiento de cada fila? y que es lo que deseas imprimir? y cuando? es decir, en que punto del segundo bloque de codigo.


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    jueves, 16 de febrero de 2017 2:42
  • Jorge Arrieta,

    No es claro lo que muestras y menos el proceso que realizas para obtener los resultados. Te recomiendo des mayores detalles porque no creo ser el único que entiende poco de lo que hasta ahora has mostrado.

    Por lo pronto, hasta tener claro lo que presentas y lo que requieres no me aventuraría a proponer una solución o un medio de solución, esperamos tu feed-back.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 16 de febrero de 2017 2:55
  • Hola, que tal la verdad no me explique bien:

    1. el bloque 1 del codigo son unas consultas que me arrojan N datos  en un rango de fechas.

    2. En el Bloque 2 del codigo estan los if que se encargan de validar si los datos estan al 100% pero lo que quiero es que los valide de uno por uno en esa parte (ahi es mi problema).

    3. ya que se validaron los datos si el status es diferente de 5 me los este almacenando en una tabla temporal.

    En si eso es todo lo que quiero hacer.

    Espero haberme explicado.

    Saludos.


    jueves, 16 de febrero de 2017 15:12
  • Faltan varias preguntas por responder, pero bueno, al menos a mi aun no me queda claro; si quieres recorrer el resultado de una consulta, te sugiero que revises las ligas que te proporcione sobre CURSORes en SQL SERVER, con eso logras recorrer fila por fila.


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    jueves, 16 de febrero de 2017 15:39
  • Se puede hacer de una manera sin usar los cursores ?
    jueves, 16 de febrero de 2017 18:59
  • Por ello te comentaba que requerimos de mayor información,  que estas obteniendo actualmente y que esperas como resultado inicial para poder ofrecerte una solución alternativa, aunque de la forma que estas planteando el problema tu comentas que quieres recorrer el resultado de una consulta, fila por fila, o al menos eso es lo que estoy comprendiendo, y esto solo se puede lograr con cursores (  según mi experiencia )...


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    • Marcado como respuesta Jorge Arrieta lunes, 20 de febrero de 2017 21:35
    jueves, 16 de febrero de 2017 21:10
  • Se puede hacer de una manera sin usar los cursores ?

    Lo siento por la pregunta, pero, ¿hacer qué?

    Jorge, con una explicación tan escueta y bloques de código difícil de relacionar entre sí es bastante complicado que podamos adivinar lo que haces y lo que quieres obtener y evidentemente si desconocemos el contexto ¿cómo podríamos emitir una recomendación?.

    Escribir código t-sql es lo que sabemos hacer, lo único que te pedimos es que nos dejes claro el contexto. ¿Te parece si nos creas unas tablas y datos de ejemplo y nos indicas claramente los resultados que esperas en base a los datos de prueba que has ingresado?


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 17 de febrero de 2017 4:02