SQL Server - Relizar dos Consultas a una misma tabla

 
Vista:
sin imagen de perfil
Val: 14
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por richard (7 intervenciones) el 27/01/2019 02:17:55
Hola buenas noches, alguien me puede ayudar con esta consulta, quiero seleccionar el primer y ultimo evento segun la fecha pero que el resultado lo muestre en 4 columnas, hasta ahora he realizado esta consulta, pero lo divide en dos filas


gracias por su ayuda

SELECT top 1 T1.SRVDT AS FECHA_IN, T2.NM AS PUERTA_IN
FROM T_LG201901 T1
INNER JOIN T_DR T2 ON T1.DEVUID = T2.INSDEVUID
INNER JOIN T_EVTTYP T3 ON T1.EVT = T3.EVT
WHERE T1.USRID = 2977028 AND T1.EVT = 4865 AND T1.SRVDT LIKE '%2019-01-23%'
ORDER BY T1.SRVDT ASC


SELECT top 1 T1.SRVDT AS FECHA_OUT, T2.NM AS PUERTA_OUT
FROM T_LG201901 T1
INNER JOIN T_DR T2 ON T1.DEVUID = T2.INSDEVUID
INNER JOIN T_EVTTYP T3 ON T1.EVT = T3.EVT
WHERE T1.USRID = 2977028 AND T1.EVT = 4865 AND T1.SRVDT LIKE '%2019-01-23%'
ORDER BY T1.SRVDT DESC
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: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por Isaias (4558 intervenciones) el 28/01/2019 18:47:23
Si, porque son DOS SELECT's

¿Porque no hace uso del MIN y MAX en el mismo select?
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
sin imagen de perfil
Val: 14
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por Richard Cárdenas (7 intervenciones) el 28/01/2019 20:50:36
Hola Isaías, muchas gracias por tu repuesta, si lo he echo con el min y el max pero cada evento tiene una puerta específica y al hacerlo así sólo me muestra la puerta del registo max

Saludos
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: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por Isaias (4558 intervenciones) el 28/01/2019 22:48:33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT FECHA_IN, PUERTA_IN, FECHA_OUT, PUERTA_OUT
FROM
(
SELECT top 1 T1.SRVDT AS FECHA_IN, T2.NM AS PUERTA_IN
FROM T_LG201901 T1
INNER JOIN T_DR T2 ON T1.DEVUID = T2.INSDEVUID
INNER JOIN T_EVTTYP T3 ON T1.EVT = T3.EVT
WHERE T1.USRID = 2977028 AND T1.EVT = 4865 AND T1.SRVDT LIKE '%2019-01-23%'
ORDER BY T1.SRVDT ASC
 
UNION
 
SELECT top 1 T1.SRVDT AS FECHA_OUT, T2.NM AS PUERTA_OUT
FROM T_LG201901 T1
INNER JOIN T_DR T2 ON T1.DEVUID = T2.INSDEVUID
INNER JOIN T_EVTTYP T3 ON T1.EVT = T3.EVT
WHERE T1.USRID = 2977028 AND T1.EVT = 4865 AND T1.SRVDT LIKE '%2019-01-23%'
ORDER BY T1.SRVDT DESC)
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
sin imagen de perfil
Val: 14
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por richard (7 intervenciones) el 29/01/2019 00:33:35
Hola Isaias, gracias por el interes, realizo la consulta como lo siguieres pero me sale el siguiente error

Msg 207, Level 16, State 1, Line 1
El nombre de columna 'FECHA_OUT' no es válido.
Msg 207, Level 16, State 1, Line 1
El nombre de columna 'PUERTA_OUT' no es válido.
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 Leonardo Daniel A.
Val: 98
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por Leonardo Daniel A. (48 intervenciones) el 29/01/2019 00:44:03
hola te marca error, porque en el primer select no incluye adentro el Fecha_out ni puerta out

1
2
3
4
5
6
7
8
SELECT FECHA_IN, PUERTA_IN, FECHA_OUT, PUERTA_OUT
  FROM
    (
          SELECT top 1 T1.SRVDT AS FECHA_IN, T2.NM AS PUERTA_IN
               FROM T_LG201901 T1
 
   etc
   etc
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
sin imagen de perfil
Val: 14
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por richard (7 intervenciones) el 29/01/2019 00:55:41
Hola Leonardo, gracias por la respuesta,

pude organizar un poco la consulta con los aportes de Isaias y tengo esto

select * from (
SELECT top 1 T1.SRVDT AS FECHA_IN, T2.NM AS PUERTA_IN
FROM T_LG201901 T1
INNER JOIN T_DR T2 ON T1.DEVUID = T2.INSDEVUID
INNER JOIN T_EVTTYP T3 ON T1.EVT = T3.EVT
WHERE T1.USRID = 2977028 AND T1.EVT = 4865 AND T1.SRVDT LIKE '%2019-01-23%'
ORDER BY T1.SRVDT ASC

UNION

SELECT top 1 T1.SRVDT AS FECHA_OUT, T2.NM AS PUERTA_OUT
FROM T_LG201901 T1
INNER JOIN T_DR T2 ON T1.DEVUID = T2.INSDEVUID
INNER JOIN T_EVTTYP T3 ON T1.EVT = T3.EVT
WHERE T1.USRID = 2977028 AND T1.EVT = 4865 AND T1.SRVDT LIKE '%2019-01-23%'
ORDER BY T1.SRVDT DESC)t

el resultado que me da es



FECHA_IN PUERTA_IN
1 2019-01-23 19:41:00 Entrada Sotano
2 2019-01-23 22:00:00 Salida Sotano

la consulta esta correcta, pero quiero que esos datos queden en una sola fila y en 4 columnas

FECHA_IN PUERTA_IN FECHA_OUT PUERTA_OUT
1 2019-01-23 19:41:00 Entrada Sotano 2019-01-23 22:00:00 Salida Sotano


Saludos
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: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por Isaias (4558 intervenciones) el 29/01/2019 01:17:18
A prueba y error, no tengo tus datos

¿Que te da esta consulta?

SELECT MIN(T1.SRVDT) AS FECHA_IN, T2.NM AS PUERTA_IN, MAX(T1.SRVDT) AS FECHA_OUT, T2.NM AS PUERTA_OUT
FROM T_LG201901 T1
INNER JOIN T_DR T2 ON T1.DEVUID = T2.INSDEVUID
INNER JOIN T_EVTTYP T3 ON T1.EVT = T3.EVT
WHERE T1.USRID = 2977028 AND T1.EVT = 4865 AND T1.SRVDT LIKE '%2019-01-23%'
ORDER BY T1.SRVDT ASC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 14
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por richard (7 intervenciones) el 29/01/2019 01:18:52
Gracias

sale este error

La columna 'T_DR.NM' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.

saludos
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
sin imagen de perfil
Val: 14
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por richard (7 intervenciones) el 29/01/2019 02:59:04
Hola Isaias

Hice esta consulta

1
2
3
SELECT MIN(SRVDT) AS FECHA_IN, MIN(T2.NM) AS PUERTA_ENTRADA, MAX(SRVDT) AS FECHA_OUT, MAX(T2.NM) AS PUERTA_SALIDA  FROM T_LG201901 T1
INNER JOIN T_DR T2 ON T1.DEVUID = T2.INSDEVUID
WHERE T1.USRID = 9430075 and T1.EVT = 4865 AND T1.SRVDT LIKE '%2019-01-23%'



CAPTURA-CONSULTA


el resultado es el que necesito, pero no se si este bien así, como se comporta la función cuando analiza texto

saludos
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: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por Isaias (4558 intervenciones) el 29/01/2019 17:23:40
Si esta bien

Le iba a sugerir que agregara ANTES del ORDER BY

GROUP BY T2.NM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 14
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por richard (7 intervenciones) el 29/01/2019 20:25:22
Hola Isaías, muchas gracias por su ayuda
Saludos
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: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Relizar dos Consultas a una misma tabla

Publicado por Isaias (4558 intervenciones) el 30/01/2019 17:26:50
De nada, un saludo desde CDMX
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