SQL - por favor ayudame con esta consulta

 
Vista:

por favor ayudame con esta consulta

Publicado por IVAN (2 intervenciones) el 07/05/2018 18:00:22
Hola buenos dias espero que me puedan ayudar con mi problema soy nuevo
esta es mi consulta, son 2 tablas difentes, ayudame ya me tarde con este problema

1
2
3
4
5
6
7
use Pruebas
go
select Nombre,valor,Unidad,fecha
from ( dbo.fecha tlog
JOIN dbo.entidades tlogg on tlog.ParentID = tlogg.ID)
where	Unidad = 'm3'
order by fecha desc

esa consulta me arroja estos datos
Nombre valor Unidad fecha
M401 7.869999886 m3 07/05/2018 01:08
M402 0 m3 07/05/2018 01:08
M403 0 m3 07/05/2018 01:08
M401 7.779999886 m3 07/05/2018 01:07
M502 2.332999945 m3 07/05/2018 01:08
M403 0 m3 07/05/2018 01:08
M401 7.469999886 m3 07/05/2018 01:06


quiero que me muestre de esta forma

Nombre valor Unidad fecha
M401 7.869999886 m3 07/05/2018 01:08
M402 0 m3 07/05/2018 01:08
M403 0 m3 07/05/2018 01:08
M502 2.332999945 m3 07/05/2018 01:08
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

por favor ayudame con esta consulta

Publicado por leonardo_josue (1173 intervenciones) el 07/05/2018 18:58:42
Hola Iván:

Podrías explicarnos cómo llegas al resultado que quieres, es decir, explicarnos qué criterio sigues para "filtrar" los registros que desaparecen en la segunda consulta... por lo que veo, para cada NOMBRE quieres mostrar un único registro, pero no encuentro cuál es tu lógica, si es por la última fecha, entonces hay un problema con el regitro M403, ya que los dos registros que pones en tu ejemplo tienen el mismo valor:

1
2
3
4
5
6
7
8
Nombre	valor 		Unidad	fecha
M401    7.869999886     m3      07/05/2018 01:08
M401    7.779999886     m3      07/05/2018 01:07
M401    7.469999886     m3      07/05/2018 01:06
M402    0               m3      07/05/2018 01:08
M403    0               m3      07/05/2018 01:08
M403    0               m3      07/05/2018 01:08
M502    2.332999945     m3      07/05/2018 01:08

si tu criterio tiene qué ver con la FECHA, en SAN GOOGLE hay muchos ejemplos de cómo puedes hacerlo, y aquí mismo, en este foro de consultas, la más simple es hacerlo con SUBCONSULTAS Y JOIN's, obteniendo primero la última fecha para cada grupo y después haciendo un JOIN a tu consulta ORIGINAL para obtener sólo los registros que te interesan:

1
2
3
4
5
6
7
8
9
10
SELECT
  Nombre,valor,Unidad,fecha
FROM dbo.fecha tlog
INNER JOIN dbo.entidades tlogg ON tlog.ParentID = tlogg.ID
INNER JOIN
( AQUÍ OBTIENES LA ÚLTIMA FECHA DE CADA CATEGORÍA )
t ON t.ULTIMA_FECHA = tlog.fecha AND
     nombre = t.nombre
WHERE	Unidad = 'm3'
ORDER BY fecha desc

Si continuas con problemas, POSTEA LO QUE INTENTASTE HACER, también postea POR SEPARADO la estructura de cada una de tus tablas y pon los datos que tienes en cada una de ellas, así podremos hacer pruebas y tratar de ayudarte.

Saludos
Leo.
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

por favor ayudame con esta consulta

Publicado por IVAN (2 intervenciones) el 07/05/2018 22:58:44
Muchas gracias Leo con tu aporte me diste una idea y ya me salio lo que necesitaba les comparto la consulta
1
2
3
4
5
6
7
8
9
10
11
12
13
select top 1  valor from  dbo.fechas tlog
JOIN dbo.entidades tlogg on tlog.ParentID = tlogg.ID where
Unidad = 'm3' and
CONVERT(VARCHAR(10), tlog.fecha,111)='FECHA HOY' and
tlog.ParentID=t1.ParentID
ORDER BY fecha asc
 t2.Nombre as Nombre,t2.Unidad
from  dbo.fechas t1
JOIN dbo.entidades t2 on t1.ParentID = t2.ID where
CONVERT(VARCHAR(10), t1.fecha,111)='FECHA HOY' and
Unidad = 'm3'
group by t1.ParentID,  t2.Nombre,  t2.Unidad
order by t1.ParentID asc

EL ParentID ES CON LA QUE YO RELACIONO A LA OTRA TABLA que viene siendo una tabla llamada fechas y un campo llamado ID
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