none
Comparar las filas que arroja una consulta en SQL Server RRS feed

  • Pregunta

  • Tengo una tabla la cuál tiene 3 columnas de tipo char, obtengo los datos de esta tabla y lo que quiero obtener son los registros que sean iguales en la última columna, ¿alguna idea de cómo realizarlo?

    Principalmente es para obtener los índices en los que sus columnas sean las mismas y se encuentren en el mismo orden


    Ariagna Bandala Salazar

    miércoles, 27 de mayo de 2020 15:12

Respuestas

  • Hola Ariagna Bandala Salazar:

    Tengo una tabla la cuál tiene 3 columnas de tipo char, obtengo los datos de esta tabla y lo que quiero obtener son los registros que sean iguales en la última columna, ¿alguna idea de cómo realizarlo?

    El escenario que planteas, entiendo que es el siguiente:

    create table comparar
    			 (
    			 id   int
    		   , col1 char(1)
    		   , col2 char(1)
    		   , col3 char(1)
    			 );
    go
    insert into comparar
    (id,col1, col2, col3)
    values
    (1 ,'a','a','a'),-- si en 1,2,3,5,6,8,9,11,13
    (2 ,'a','b','a'),-- si
    (3 ,'a','a','c'),-- si en 10
    (4 ,'a','a','d'),-- no
    (5 ,'a','a','a'),-- si
    (6 ,'a','a','a'),-- si
    (7 ,'a','a','b'),-- no
    (8 ,'a','a','a'),-- si
    (9 ,'a','a','a'),-- si
    (10,'a','a','c'),-- si
    (11,'a','a','a'),-- si
    (12,'a','a','e'),-- no
    (13,'a','a','a'),-- si
    (14,'a','a','f');-- no
    go

    Y una posible manera es:

    ;with cte as(
    	select col3, count(*) as veces
    	from comparar
    	group by col3
    	having count(*) > 1
    	)
    	select * from comparar inner join cte on comparar.col3 = cte.col3
    	order by id 
    

    Contar los registros agrupados por la columna, y a la salida de la query igualarlos contra la misma tabla obteniendo los resultados.

    Aunque la salida de la query correcta sería.

    ;with cte as(
    	select col3, count(*) as veces
    	from comparar
    	group by col3
    	having count(*) > 1
    	)
    	select comparar.*
    	from comparar inner join cte on comparar.col3 = cte.col3
    	order by id 

    miércoles, 27 de mayo de 2020 17:11

Todas las respuestas

  • En LWDP te puso dos codigos que buscan INDICES DUPLICADOS e INDICES REDUNDANTES, ¿ya lo viste?

    IIslas Master Consultant SQL Server

    miércoles, 27 de mayo de 2020 16:23
  • Hola Ariagna Bandala Salazar:

    Tengo una tabla la cuál tiene 3 columnas de tipo char, obtengo los datos de esta tabla y lo que quiero obtener son los registros que sean iguales en la última columna, ¿alguna idea de cómo realizarlo?

    El escenario que planteas, entiendo que es el siguiente:

    create table comparar
    			 (
    			 id   int
    		   , col1 char(1)
    		   , col2 char(1)
    		   , col3 char(1)
    			 );
    go
    insert into comparar
    (id,col1, col2, col3)
    values
    (1 ,'a','a','a'),-- si en 1,2,3,5,6,8,9,11,13
    (2 ,'a','b','a'),-- si
    (3 ,'a','a','c'),-- si en 10
    (4 ,'a','a','d'),-- no
    (5 ,'a','a','a'),-- si
    (6 ,'a','a','a'),-- si
    (7 ,'a','a','b'),-- no
    (8 ,'a','a','a'),-- si
    (9 ,'a','a','a'),-- si
    (10,'a','a','c'),-- si
    (11,'a','a','a'),-- si
    (12,'a','a','e'),-- no
    (13,'a','a','a'),-- si
    (14,'a','a','f');-- no
    go

    Y una posible manera es:

    ;with cte as(
    	select col3, count(*) as veces
    	from comparar
    	group by col3
    	having count(*) > 1
    	)
    	select * from comparar inner join cte on comparar.col3 = cte.col3
    	order by id 
    

    Contar los registros agrupados por la columna, y a la salida de la query igualarlos contra la misma tabla obteniendo los resultados.

    Aunque la salida de la query correcta sería.

    ;with cte as(
    	select col3, count(*) as veces
    	from comparar
    	group by col3
    	having count(*) > 1
    	)
    	select comparar.*
    	from comparar inner join cte on comparar.col3 = cte.col3
    	order by id 

    miércoles, 27 de mayo de 2020 17:11
  • Si, muchas gracias:3

    Ariagna Bandala Salazar

    miércoles, 27 de mayo de 2020 23:09