Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Consultas selectivas, SQL Server 2005

Estas en el tema de Consultas selectivas, SQL Server 2005 en el foro de SQL Server en Foros del Web. Hola que tal, estoy haciendo un proyecto que maneja Base de Datos, y por algun motivo se eligio trabajar con SQL Server 2005, he trabajado ...
  #1 (permalink)  
Antiguo 06/06/2008, 16:35
Usuario no validado
 
Fecha de Ingreso: marzo-2008
Ubicación: Morelia Mich. México
Mensajes: 37
Antigüedad: 16 años, 2 meses
Puntos: 0
Pregunta Consultas selectivas, SQL Server 2005

Hola que tal, estoy haciendo un proyecto que maneja Base de Datos, y por algun motivo se eligio trabajar con SQL Server 2005, he trabajado con BD anteriormente, pero ya tiene tiempo que no lo hacia.

Mi duda es que no se como realizar una consulta,
tengo una tabla llamada 'Divisas' con 3 campos (fechaCambio(datetime), Descripcion (nchar30) y TipoCambio(float)).
el campo Fecha se modifica cada que se actualiza o modifica el Tipo de Cambio muy seguido, y cada que se modifica una divisa se almacena como nuevo registro, esto para tener un historico de los cambios,
03/02/2008 00:00 PESOS 1
03/05/2008 00:00 US DOLARES 10.28
05/05/2008 00:00 US DOLARES 10.35
01/06/2008 00:00 EUROS 10.58
02/06/2008 00:00 US DOLARES 10.38
06/06/2008 00:00 EUROS 10.56

Bueno ahora si,, tengo que seleccionar todos los diferentes tipos de divisa con la fecha mas actual del mismo (Descripcion) por ejemplo lo cual me debe dar como resultado lo siguiente:

03/02/2008 00:00 PESOS 1
01/06/2008 00:00 US DOLARES 10.38
06/05/2008 00:00 EUROS 10.56

De antemano gracias por la ayuda sugerencia o comentario que me puedan brindar
  #2 (permalink)  
Antiguo 06/06/2008, 18:35
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Consultas selectivas, SQL Server 2005

Select TipoCambio, Descripcion, max(fecha)
from Divisas
  #3 (permalink)  
Antiguo 09/06/2008, 11:28
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Consultas selectivas, SQL Server 2005

rommel

Tal vez a tu script le haga falta el GROUP BY

Select TipoCambio, Descripcion, max(fecha)
from Divisas
GROUP BY TipoCambio, Descripcion
  #4 (permalink)  
Antiguo 09/06/2008, 11:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consultas selectivas, SQL Server 2005

como te dice iislas, pero sin agrupar por tipocambio.
Select TipoCambio, Descripcion, max(fecha)
from Divisas
GROUP BY Descripcion
  #5 (permalink)  
Antiguo 09/06/2008, 12:25
Usuario no validado
 
Fecha de Ingreso: marzo-2008
Ubicación: Morelia Mich. México
Mensajes: 37
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Consultas selectivas, SQL Server 2005

Hola, gracias por responder.
Ya intente de las dos formas que me sugieren, y la consulta me regresa todos los registros pero ordenados, lo que necesito realmente, es que de cada una de las descripciones que sean diferentes me regrese solo el valor con el campo fecha mas reciente, y no repita los los valores del campo descripcion.

de antemano gracias por la ayuda que me puedan brindar
  #6 (permalink)  
Antiguo 09/06/2008, 12:37
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consultas selectivas, SQL Server 2005

Si agrupas solo por descripcion, como te he propuesto, solo te mostrará uno de cada moneda, y como en la selección pones max(fecha), será la fecha más actual.
Comprueba que sólo hayas agrupado por descripcion, que si no me equivoco, es el campo donde escribes PESOS, EUROS, US DOLARES
  #7 (permalink)  
Antiguo 09/06/2008, 13:24
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Consultas selectivas, SQL Server 2005

Nada como una prueba:


create table #monedas (fecha datetime, descripcion varchar(50), TipoCambio smallmoney)

insert into #monedas values('03/02/2008 00:00','PESOS', 1)
insert into #monedas values('03/05/2008 00:00','US DOLARES', 10.28)
insert into #monedas values('05/05/2008 00:00','US DOLARES', 10.35)
insert into #monedas values('01/06/2008 00:00','EUROS', 10.58)
insert into #monedas values('02/06/2008 00:00','US DOLARES', 10.38)
insert into #monedas values('06/06/2008 00:00','EUROS', 10.56)

SELECT t1.descripcion, t1.TipoCambio, t2.fecha
from #monedas t1 join (Select descripcion, Max(fecha) as fecha
from #monedas group by descripcion) as t2
on t1.descripcion = t2.descripcion
and t1.fecha = t2.fecha

Resultado:

US DOLARES 10.35 2008-05-05 00:00:00.000
PESOS 1.00 2008-03-02 00:00:00.000
EUROS 10.56 2008-06-06 00:00:00.000
  #8 (permalink)  
Antiguo 09/06/2008, 14:48
Usuario no validado
 
Fecha de Ingreso: marzo-2008
Ubicación: Morelia Mich. México
Mensajes: 37
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Consultas selectivas, SQL Server 2005

Gracias iislas, eso eso si me funciono muy bien
  #9 (permalink)  
Antiguo 09/06/2008, 17:57
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Consultas selectivas, SQL Server 2005

Que bien, saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:35.