none
Consulta con LEFT RRS feed

  • Pregunta

  • Hola amigos!

    Tengo una duda, estoy tratando de hacer una consulta que primero busque un determinado número en un rango de números y una vez que encuentre la fila compare el campo NIR con el resultado de una condición: si el número empieza con 33 me dará los primeros 2 dígitos si no me entrega los primeros 3. Mi consulta es la siguiente, sin embargo al parecer la sintaxis esta mal, e intentado varias cosas e incluso poner un if pero no logro que funcione.

    Select * from pnn_Publico where '3328570050' 
      BETWEEN Numeracion_Inicial AND Numeracion_Final and 
      NIR = (select(left ('3328570005',2)) where '3328570005' LIKE '33%') 
      or (select (left ('3328570005',3))

    Agradezco mucho su ayuda y tiempo prestado.

    Saludos.


    miércoles, 29 de mayo de 2019 17:21

Respuestas

  • Hola tmartíneze:

    Tú escenario no esta del todo claro, pero precisas seguro de CASE

    CREATE TABLE pnn_publico
    (id         INT IDENTITY(1, 1)
    , numeracion BIGINT
    , nir        VARCHAR(10)
    );
    GO
    
    INSERT INTO pnn_publico
    (numeracion
    , nir
    )
    VALUES      (3328570050, '3328570005'), (3328570060, '3228570005'), (3328570070, '3428570005');
    GO
    

    Este es un ejemplo de lo que has escrito.

    La solución puede ser parecido a esto.

    DECLARE @numeracioninicial BIGINT;
    
    DECLARE @numeracionfinal BIGINT;
    
    SET @numeracioninicial = 3328570050;
    
    SET @numeracionfinal = 3328570055;
    
    SELECT id
    	, numeracion
    	, nir
    	, CASE WHEN LEFT(nir, 2) = '33'
    			 THEN LEFT(nir, 2)
    		  ELSE LEFT(nir, 3)
    	  END AS parteIzquierdaNir
    FROM   
    	pnn_publico
    WHERE  numeracion BETWEEN @numeracioninicial AND @numeracionfinal;

    Fíjate que como dices, si el número empieza con xx me dará los dos primeros dígitos, por tanto eso implica, que ¿es una columna de la select?

    Case también se puede aplicar en la parte del where sin ningún problema.

    Salida

    Case 

    https://docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql?view=sql-server-2017

    miércoles, 29 de mayo de 2019 18:13