none
Select CASE Unificar 2 Campos en 1 RRS feed

  • Pregunta

  • Hola

    Espero que me puedan ayudar, necesito unificar la información de dos campos (CLIENPOT y CLIEGALV) en uno solo (Clientes), he realizado la siguiente consulta:

    select case when len(clienpot)<>'' then cliegalv
                else clienpot end as clientes,*
    from registros

    Este es el resultado, en unos registros si muestra la información y en otras no muestra nada

    

    De antemano gracias por la ayuda.


    • Editado Maoch02 jueves, 25 de abril de 2019 18:46
    jueves, 25 de abril de 2019 18:45

Respuestas

  • Hola Maoch02:

    Es difícil darte una ayuda que sea válida, si no muestras nada más que dos capturas de pantalla, que no pueden ofrecer la suficiente información, ni la estructura de las tablas que las alimentan.

    A priori tienes dos opciones, para implementar. Utilizar las funciones LAG/LEAD para obtener el siguiente registro (validas desde SQL 2012), o utilizar un código adaptado para versiones anteriores.

    2ª Agrupar para recoger estos campos

    Pero sin ningún tipo de estructura es complicado darte una opción.

    CREATE TABLE registros
    (id        INT IDENTITY(1, 1)
    , clientpot VARCHAR(100)
    , cliegalv  VARCHAR(100)
    );
    GO
    
    INSERT INTO registros
    (clientpot
    , cliegalv
    )
    VALUES
    ('', 'PROMPERU'),
    ('CECONSUD', ''),
    ('', 'HIDAJARA'),
    ('HTF EXPORT IMPORT', ''),
    ('', 'VIET');
    GO
    
    WITH C
    	AS (SELECT ROW_NUMBER() OVER(
    			 ORDER BY id) AS fila
    		    , ID
    		    , cliegalv
    		    , LAG(clientpot) OVER(
    			 ORDER BY ID) AS SIG
    	    FROM   
    		    REGISTROS)
    	SELECT C.fila
    		, C.ID
    		, C.cliegalv
    	FROM   
    		C
    	WHERE  fila % 2 <> 0;
    Salida

    Lag/Lead

    https://javifer2.wordpress.com/2018/09/11/lag-y-lead-siguiente-y-anterior/

    jueves, 25 de abril de 2019 19:19