none
Optimizar query RRS feed

  • Pregunta

  • Buen día, quería saber de que forma puedo optimizar este barrido, en teoría lo que quiero es que sea leído una vez

    que solo haya un when y que introduzca el valor lab, lo he intentado con un when adentro pero no logro hacerlo.

    Ayudenme Dioses del SQL :D

    when  
    exists (select tm.cod_item from #TEMPORAL2 tm where m.id_cita=tm.id_cita and tm.cod_item='Z298' and tm.valor_lab='SF6') then 11
    when  
    exists (select tm.cod_item from #TEMPORAL2 tm where m.id_cita=tm.id_cita and tm.cod_item='Z298' and tm.valor_lab='AF3') then 12

    miércoles, 23 de mayo de 2018 21:22

Todas las respuestas

  • case (select tm.tm.valor_lab_item from #TEMPORAL2 tm where m.id_cita=tm.id_cita and tm.cod_item='Z298' )

    when 'SF6' then 11

    when 'AF3' then 12

    else null

    end 


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    jueves, 24 de mayo de 2018 7:36
    Moderador
  • Hola, si intente lo que me mencionas antes pero me arroja el siguiente error.

    Msg 512, Level 16, State 1, Procedure usp_TRAMA_BASE_JOVEN_RPT_05_PRESTACIONES_SSR_NEW_AC, Line 143 [Batch Start Line 7]
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
    The statement has been terminated.

    Segun dice esta arrojando 2 valores, es lo que entiendo pero no se por que.

    jueves, 24 de mayo de 2018 14:50
  • case (select top 1 tm.tm.valor_lab_item from #TEMPORAL2 tm where m.id_cita=tm.id_cita and tm.cod_item='Z298' order by 1 )

    when 'SF6' then 11

    when 'AF3' then 12

    else null

    end 

    Así evitas eso, si quieres que tenga prioridad el SF6 añade order by 1 desc al subselect, de lo contrario, siempre que exista af3 te pondrá 12 .

    Es lo mismo que te pasaría con dos subqueries porque no puedes entrar por dos partes de un case 


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    jueves, 24 de mayo de 2018 15:46
    Moderador
  • Hola

    Corrigiendo el tm, pero la idea es la misma a la que comenta Miguel.

    CASE (SELECT tm.valor_lab_item 
    		FROM #TEMPORAL2 AS tm 
    		WHERE m.id_cita = tm.id_cita 
    		AND tm.cod_item='Z298' ) 
    	WHEN 'SF6' THEN 11 
    	WHEN 'AF3' THEN 12 
    	ELSE NULL 
    END 

     
    jueves, 24 de mayo de 2018 17:45