none
Consulta en Campos duplicados RRS feed

  • Pregunta

  • Buenas tardes,

    Tengo una tabla con datos de articulos en varios idiomas con mismo CodigoArticulo y necesitaria poder mostrar en una sola linea el CodigoArticulo | DescripcionING | DescripcionFRA

    La disposición de la tabla es la siguiente:

    TABLA

    CODIGOARTICULO        CodigoIdioma       DescripcionArticulo

    00001002                    FRA               DescripcionFRA

    00001002                    ING               DescripcionING

    00001003                    FRA               DescripcionFRA

    00001003                    ING               DescripcionING

    RESULTADO

    00001002                   DescripcionFRA      DescripcionING

    00001003                   DescripcionFRA      DescripcionING

    Muchas gracias

    jueves, 19 de abril de 2018 13:57

Todas las respuestas

  • Create View vwTabla
    As
    Select
        t.CodigoArticulo
        , t.CodigoIdioma As [CodIdioma1]
        , t.DescripcionArticulo As [DescArtIdioma1]
        , t2.CodigoIdioma As [CodIdioma2]
        , t2.DescripcionArticulo As [DescArtIdioma2]
    From
        tabla As t
        Left Join
        Tabla As t2
        On t.CodigoArticulo = t2.CodigoArticulo
    Where
        t.CodigoIdioma < t2.CodigoIdioma --Creo que esto funciona con texto, pero no estoy 100% seguro.
    ;
    
    Ahora tiene una vista que puede usar en cualquier consulta.

    Jose R. MCP
    Code Samples

    jueves, 19 de abril de 2018 14:17
  • Hola johnydead:

    Por si te encaja, y dado los pocos datos que muestras a mi me parece que es un pivot dinámico.

    CREATE TABLE TABLAIDIOMAS (CODIGOARTICULO VARCHAR(8), CODIGOIDIOMA VARCHAR(3), DESCRIPCIONARTICULO VARCHAR(20))
    GO
    
    INSERT INTO TABLAIDIOMAS (CODIGOARTICULO, CODIGOIDIOMA, DESCRIPCIONARTICULO)
    	VALUES
    		('00001002','FRA', 'DESCRIPCIONFRA'),
    		('00001002','ING', 'DESCRIPCIONING'),
    		('00001003','FRA', 'DESCRIPCIONFRA'),
    		('00001003','ING', 'DESCRIPCIONING'),
    		('00001003','CHN', 'DESCRIPCIONCHN')
    		 /*HE AÑADIDO ESTE POR SI ENCAJA EN LO QUE TU PRECISAS */
    GO
    
    
    DECLARE @COLUMNS VARCHAR(MAX);
    DECLARE @SQL NVARCHAR(MAX)
    SET @COLUMNS = STUFF(
    	(
    	SELECT ',' + QUOTENAME(LTRIM(DESCRIPCIONARTICULO))
    		FROM
    			(
    				SELECT DISTINCT DESCRIPCIONARTICULO
    					FROM TABLAIDIOMAS
    			) AS T
    		ORDER BY DESCRIPCIONARTICULO
    		FOR XML PATH('')
    	), 1, 1, '');
    
     SET @SQL = N'SELECT * 
    			FROM
    					(  
    						SELECT  CODIGOARTICULO, DESCRIPCIONARTICULO
    							FROM TABLAIDIOMAS
    					) AS T
    			PIVOT   
    				(
    					MIN(DESCRIPCIONARTICULO)
    					FOR DESCRIPCIONARTICULO IN (' + @COLUMNS + ')
    				) AS P'; 
    
    EXEC SP_EXECUTESQL @SQL;
    Un saludo

    jueves, 19 de abril de 2018 19:24