AnswerBun.com

¿Como obtener un solo registro cuando "Employee_ID" y "Name" se repiten, pero las columnas "Time" y "temperatureInf" son diferentes?

Stack Overflow en español Asked on January 1, 2022

¡Hola a todos!
Como podrán ver, soy novato en esto de SQL Server, ya que me parece que esta consulta es muy sencilla, pero la verdad ya me he atorado un poco con este tema. El problema es el siguiente:

1.- De una tabla llamada "Allevent", que cuenta con columnas Employee_ID, Name, Time y temperatureInf, necesito hacer una consulta que me traiga un solo registro; ya he intentado varias consultas, desde el uso del "distinct", filtros con "where" y uso del "group by", pero mi conocimiento me limita a entender que más podría hacer, miren aquí una imagen de mi resultado, el cual ya me entrega parte de lo que deseo, sin embargo aun me dúplica registros, yo solo quiero uno sin importar si es el primero, segundo o ultimo de los repetidos.

introducir la descripción de la imagen aquí

Como ven al hacer mi consulta se siguen repitiendo los registros, pero yo solo quiero uno solo sin importar cual sea.

¡De antemano muchas gracias comunidad!

One Answer

Una de las soluciones que puedes plantear es numerar filas.

El escenario que planteas:

Create table dbo.Allevent17 
(
  Employee_ID int
, Name varchar(100)
, Time datetime2
, temperatureinfo decimal(4,2)
, Overtemperature varchar(100)
);
GO
insert into dbo.Allevent17(Employee_ID, Name, Time, temperatureinfo, Overtemperature)
values
(10,'ALBERTO TRUJILLO', '20200711 07:35', 35.8, 'normal'),
(10,'ALBERTO TRUJILLO', '20200711 07:35', 35.9, 'normal'),
(13,'DANIEL CORDERO', '20200711 06:45', 35.8, 'normal'),
(13,'DANIEL CORDERO', '20200711 06:46', 35.9, 'normal'),
(13,'DANIEL CORDERO', '20200711 07:28', 35.8, 'normal'),
(13,'DANIEL CORDERO', '20200711 07:28', 35.9, 'normal'),
(13,'DANIEL CORDERO', '20200711 07:50', 35.7, 'normal'),
(13,'DANIEL CORDERO', '20200711 07:50', 36.1, 'normal'),
(14,'ABEL RIVERA', '20200711 07:35', 36, 'normal'),
(14,'ABEL RIVERA', '20200711 07:35', 36.2, 'normal'),
(15,'JOSE DE JESUS', '20200711 07:28', 35.8, 'normal');
GO

Ahora podemos utilizar una tabla de expresión común para "recoger" los registros de la tabla y numerarlos particionados por el código de empleado.

WITH CTE
     AS (SELECT EMPLOYEE_ID
              , NAME
              , Time
              , temperatureinfo
              , Overtemperature
              , ROW_NUMBER() OVER (PARTITION BY EMPLOYEE_ID ORDER BY TIME) AS ROW
                FROM Allevent17
                WHERE Time >= '20200711' AND Time < '20200712' AND Name IS NOT NULL)
     SELECT   c.Employee_ID
            , c.Name
            , c.Time
            , c.temperatureinfo
            , c.Overtemperature
            FROM CTE c
        WHERE ROW = 1;

Resultado

Si observas la query, de la tabla de expresión común, se realiza un select sobre alleven17 con las restricciones por fecha y nombre planteadas y lo más importante, se numeran las filas empezando en 1 pero por cada employee_id. Como row_number exige una ordenación y te da igual, he escogido time como criterio de ordenación de los registros de cada empleado.

Tablas de expresión común (cte)

Numerar filas con Row number

Answered by Javi fer2 on January 1, 2022

Add your own answers!

Related Questions

problema con formulario en laravel

0  Asked on January 1, 2021 by guillermo-albornoz

   

Botón permanezca cambiado de color al ser usado

0  Asked on January 1, 2021 by jose-velasquez

     

¿Cómo puedo encontrar el centroide sin que me de error?

1  Asked on December 31, 2020 by sheccid-selene-corts-servn

       

fallo en fetch js para enviar un dato usando boton (js)

1  Asked on December 31, 2020 by programando

   

Fullcalendar problema con actualizar eventos

0  Asked on December 30, 2020 by matiri90

       

Iterar tuplas y asignar variables por cada iteración

1  Asked on December 30, 2020 by carlos-chavita

 

INNER JOIN entre dos tablas

1  Asked on December 29, 2020 by miguel-ngel-martn

 

¿Cómo sumar 1 en un array?

2  Asked on December 29, 2020 by armando-sarmiento

   

Sumar tiempos tipo TIME en MySQL

1  Asked on December 28, 2020 by ignacio-fuentes

   

Buscar un input dentro de una tabla datatable

2  Asked on December 28, 2020 by jonathan-cunza

   

Abrir un PDF desde un ListBox en C#

1  Asked on December 27, 2020 by ricardo-vazquez

     

Ask a Question

Get help from others!

© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP