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

[SOLUCIONADO] Como seleccionar el campo con la fecha mas reciente de este select?

Estas en el tema de Como seleccionar el campo con la fecha mas reciente de este select? en el foro de SQL Server en Foros del Web. Hola amigos del foro, Tengo el siguiente select: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT MAX ( H . [ SettledDate ] ) AS 'LastDate' ...
  #1 (permalink)  
Antiguo 20/01/2014, 11:45
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Como seleccionar el campo con la fecha mas reciente de este select?

Hola amigos del foro,

Tengo el siguiente select:
Código SQL:
Ver original
  1. SELECT MAX(H.[SettledDate]) AS 'LastDate', J.[Player], CONVERT(VARCHAR(8), G.[GradedDate] , 108) AS 'Time', D.[RESULT], H.[RiskAmount], H.[WinAmount], G.[VisitorTeam] + ' @ ' +G.[HomeTeam] AS 'Teams',
  2.        P.[PeriodDescription], CONVERT(VARCHAR(MAX),G.[VisitorNumber]) + '/' + CONVERT(VARCHAR(MAX),G.[HomeNumber]) AS 'NumGame', D.[IdWager], W.[Description]  
  3. FROM GRADEDWAGERHEADER H, GRADEDWAGERDETAIL D, GRADEDGAME G, PERIOD P, AGENT A, WAGERTYPE W, PLAYER J
  4. WHERE H.[IdWager]  = D.[IdWager] AND
  5.       D.[IdGame]   = G.[IdGame]  AND
  6.       H.[IdAgent]  = A.[IdAgent] AND
  7.       H.[IdPlayer] = J.[IdPlayer] AND
  8.       H.[IdWagerType] = W.[IdWagerType] AND
  9.       D.[IdSport] = P.[IdSport] AND
  10.       D.[Period]  = P.[NumberOfPeriod] AND
  11.       H.[IdAgent] = 5585 AND
  12.       D.[IdWager] = 12683461 AND
  13.       D.[RESULT]  = 1
  14. GROUP BY J.[Player], G.[GradedDate], D.[RESULT], H.[RiskAmount], H.[WinAmount], G.[VisitorTeam], G.[HomeTeam],
  15.          P.[PeriodDescription], G.[VisitorNumber], G.[HomeNumber], D.[IdWager], W.[Description]
  16. ORDER BY TIME DESC
Me funciona bien, pero en algunos caso me retorna mas de un dato y lo que deseo es que me retorne solo el que tenga el campo H.[SettledDate] mas reciente, alguna ayuda al respecto?
  #2 (permalink)  
Antiguo 20/01/2014, 11:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Como seleccionar el campo con la fecha mas reciente de este select?

Código SQL:
Ver original
  1. SELECT * FROM(
  2. SELECT ROW_NUMBER()OVER (partition BY lastdate ORDER BY lastdate ASC) AS rn, * FROM
  3. (
  4. SELECT MAX(H.[SettledDate]) AS 'LastDate', J.[Player], CONVERT(VARCHAR(8), G.[GradedDate] , 108) AS 'Time', D.[RESULT], H.[RiskAmount], H.[WinAmount], G.[VisitorTeam] + ' @ ' +G.[HomeTeam] AS 'Teams',
  5.        P.[PeriodDescription], CONVERT(VARCHAR(MAX),G.[VisitorNumber]) + '/' + CONVERT(VARCHAR(MAX),G.[HomeNumber]) AS 'NumGame', D.[IdWager], W.[Description]  
  6. FROM GRADEDWAGERHEADER H, GRADEDWAGERDETAIL D, GRADEDGAME G, PERIOD P, AGENT A, WAGERTYPE W, PLAYER J
  7. WHERE H.[IdWager]  = D.[IdWager] AND
  8.       D.[IdGame]   = G.[IdGame]  AND
  9.       H.[IdAgent]  = A.[IdAgent] AND
  10.       H.[IdPlayer] = J.[IdPlayer] AND
  11.       H.[IdWagerType] = W.[IdWagerType] AND
  12.       D.[IdSport] = P.[IdSport] AND
  13.       D.[Period]  = P.[NumberOfPeriod] AND
  14.       H.[IdAgent] = 5585 AND
  15.       D.[IdWager] = 12683461 AND
  16.       D.[RESULT]  = 1
  17. GROUP BY J.[Player], G.[GradedDate], D.[RESULT], H.[RiskAmount], H.[WinAmount], G.[VisitorTeam], G.[HomeTeam],
  18.          P.[PeriodDescription], G.[VisitorNumber], G.[HomeNumber], D.[IdWager], W.[Description]
  19. ORDER BY TIME DESC
  20. ) AS t1
  21. ) t2 WHERE rn=1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 20/01/2014, 11:59
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Respuesta: Como seleccionar el campo con la fecha mas reciente de este select?

Gracias amigo, si no es mucha la molestia podrías explicarme mejor este select que me pusistes para entenderlo?
  #4 (permalink)  
Antiguo 20/01/2014, 12:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Como seleccionar el campo con la fecha mas reciente de este select?

investiga sobre la funcion row_number, lo que hice fue agarrar el primer registro que regresa esta funcion sobre el campo de fecha :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 20/01/2014, 12:06
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
De acuerdo Respuesta: Como seleccionar el campo con la fecha mas reciente de este select?

Gracias amigo investigare te debo otra mas

Etiquetas: campo, fecha, group, select
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 22:31.