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

Ayuda Sentencia MAX

Estas en el tema de Ayuda Sentencia MAX en el foro de SQL Server en Foros del Web. Buenas noches les escribo a ver si me pueden ayudar con un problemita que tengo al hacer un store procedure en Sql Server 2000 o ...
  #1 (permalink)  
Antiguo 31/03/2009, 18:07
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Ayuda Sentencia MAX

Buenas noches les escribo a ver si me pueden ayudar con un problemita que tengo al hacer un store procedure en Sql Server 2000 o 2005, tratare de explicarme lo mejor que pueda:

Tengo 2 tablas exactamente iguales en su estructura, que se alimentan de 2 procesos diferentes. Los campos son: id(autonumerico) - lote(char) - fecha - correlativo(int).

Lo que debo hacer con estas tablas es lo siguiente: Debo guardar en el campo correlativo los numero consecutivos, siguiendo la secuencia en ambas tablas, no por separadas. Ejemplo: El proceso de tabla1 se ejecuta y guarda el correlativo 1, se vuelve a ejecutar y guarda el 2, se ejecuta el proceso de la tabla 2 y debe guardar el correlativo 3 y asi sucesivamente. Es decir el correlativo de las tabla1 se genera dependiendo del maximo del correlativo de tabla2 y visceversa. Ojala me halla explicado mejor.

He intentado hacerlo con la sentencia max de sql usando tambien subconsultas, pero aun no he dado con la solucion. Cualquier ayuda, orientacion, ejemplo que puedan facilitarme sera muy bien recibido. gracias y a la orden ...
  #2 (permalink)  
Antiguo 01/04/2009, 13:51
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Ayuda Sentencia MAX

debes declarar dos variables el primero q te obtena el max de la primera tabla y el segundo el otro max de la otra tabla

declara @id1 int,@id2 int,@code int
select @id1=max(id) from tabla1
select @id2=max(id) from tabla2

if @id1>@id2
set @code = @id1 + 1
else
set @code = @id2 + 1

luego los demas campos son los mismos
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 01/04/2009, 17:47
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda Sentencia MAX

Ok, muy bien, con esto tomo el maximo de cada una de las tablas y las comparo, cierto? Pero luego de obtener el max de tabla 1 debo buscar si existe en tabla2
  #4 (permalink)  
Antiguo 01/04/2009, 23:32
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ayuda Sentencia MAX

¿Cual es el problema?, seria tan facil como hacer............

SELECT * FROM TABLA2 WHERE id = (select max(id) from tabla1)

Esto, sin declarar variables.
  #5 (permalink)  
Antiguo 02/04/2009, 08:45
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Ayuda Sentencia MAX

Esta bien tu respuesta pero el lo q trata es querer tomar el valor del id para poder guardarlos en otra tabla
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #6 (permalink)  
Antiguo 02/04/2009, 09:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda Sentencia MAX

es correcto, necesito llevar un correlativo como si tabla1 y tabla2 fuesen una sola
  #7 (permalink)  
Antiguo 02/04/2009, 10:47
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Ayuda Sentencia MAX

Has un select union, entre los selects del from falta la palabra union pero
no me deja grabar si lo coloco ahi

select max(t.id) + 1
from( select id from tabla1

select id from tabla2) t

saludos
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #8 (permalink)  
Antiguo 03/04/2009, 10:42
 
Fecha de Ingreso: marzo-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda Sentencia MAX

Me explico de nuevo: Tengo 2 tablas exactamente iguales, con los siguientes campos: Nro - Lote - correlativo, el campo Nro es autoincrementable.

Que debo hacer?

Debo buscar el maximo correlativo de un lote x en tabla 1. El resultado de esta consulta debo buscarlo en tabla 2 para el mismo lote x.

Tan sencillo como eso pero no logro hacerlo ...
  #9 (permalink)  
Antiguo 03/04/2009, 13:52
Avatar de cadesa  
Fecha de Ingreso: septiembre-2007
Ubicación: Guatemala
Mensajes: 130
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ayuda Sentencia MAX

Según entiendo primero obtenes un correlativo de la tabla 1 y con esto buscas en la tabla 2 el lote con ese correlativo, para ver si ya existe ese correlativo, si es así lo que queres se debe de hacer así:

Código SQL:
Ver original
  1. CREATE FUNCTION dbo.Maximo (@lote AS VARCHAR(20))  
  2.  
  3. RETURNS INT AS  
  4. BEGIN
  5.  
  6. DECLARE @correlativo1 AS INT
  7. DECLARE @correlativo2 AS INT
  8.  
  9. SELECT   @correlativo1 = isnull(MAX(correlativo),0)
  10. FROM     TABLA_1
  11. WHERE  Lote = @Lote
  12.  
  13. SELECT   @correlativo2 = isnull(MAX(correlativo),0)
  14. FROM    TABLA_2
  15. WHERE  Lote = @Lote
  16. AND      correlativo = @correlativo1
  17.  
  18. RETURN (@correlativo2)
  19. END

La función te retorna el correlativo de la Tabla 2 a partir del lote y el correlativo.

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 11:04.