SQL - Cómo obtener la primera y la utlimo registros

 
Vista:
Imágen de perfil de Antonio
Val: 30
Ha aumentado su posición en 3 puestos en SQL (en relación al último mes)
Gráfica de SQL

Cómo obtener la primera y la utlimo registros

Publicado por Antonio (30 intervenciones) el 14/08/2017 22:51:31
hola a todos tengo una consulta en sql el cual me devuelve todas las entradas y salidas de todos empleados.

pero quisiera que solo de devuelva la primera entrada y la ultima salida de todos los empleados.

esta es mi consulta

1
2
3
4
5
select FirstName as 'Nombre',LastName as 'Apellido',description as 'entrada',
CONVERT(VARCHAR(10),TimeStamp_Server,103) AS Fecha,
		RIGHT(TimeStamp_Server, 7) AS Hora  from Message
where Description = 'Torniquete Entrada'
order by fecha
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Cómo obtener la primera y la utlimo registros

Publicado por Isaias (1921 intervenciones) el 14/08/2017 22:56:38
Pues dependera del motor de base de datos, por ejemplo, para SQL Server, podrias hacer un TOP 1 y orderarlo por fecha

¿Que motor de base de datos manejas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antonio
Val: 30
Ha aumentado su posición en 3 puestos en SQL (en relación al último mes)
Gráfica de SQL

Cómo obtener la primera y la utlimo registros

Publicado por Antonio (30 intervenciones) el 14/08/2017 23:23:49
sql server 2014
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Cómo obtener la primera y la utlimo registros

Publicado por Isaias (1921 intervenciones) el 15/08/2017 00:53:02
Te pongo un ejemplo, tomalo, modificalo y obten tu resultado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
-- Datos en tabla de entrada
--id  group   val   start   end
--1   10      36    465     89
--2   10      35    55      11
--3   10      34    20      456
--4   20      38   1140     1177
--5   20      22    566     788
--6   20      1235  789     4796
--7   20      7894  741     1067
 
-- Resultado deseado
--id  group   val   start   end
-- 1   10      36    465     89
-- 3   10      34    20      456
-- 4   20      38   1140     1177
-- 7   20      7894  741     1067
 
drop table #test
create table #test ([id] int, [group] int, [val] int, [start] int, [end] int)
insert into #test values(
1   ,10      ,36    ,465     ,89),
(2   ,10      ,35    ,55      ,11),
(3   ,10      ,34    ,20      ,456),
(4   ,20      ,38   ,1140     ,1177),
(5   ,20      ,22   ,566     ,788),
(6   ,20      ,1235  ,789     ,4796),
(7   ,20      ,7894  ,741     ,1067)
 
 
WITH Cte AS(
    SELECT *,
        RnAsc = ROW_NUMBER() OVER(PARTITION BY [group] ORDER BY val),
        RnDesc = ROW_NUMBER() OVER(PARTITION BY [group] ORDER BY val DESC)
    FROM #test
)
SELECT
    id, [group], val, start, [end]
FROM Cte
WHERE
    RnAsc = 1 OR RnDesc = 1
ORDER BY [group], val
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar