SQL - Sentencia MAX

   
Vista:

Sentencia MAX

Publicado por José Alexander López Martínez (1 intervención) el 01/04/2009 01:59:21
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 ...
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

RE:Sentencia MAX

Publicado por Rolando Lau (28 intervenciones) el 02/04/2009 21:19:24
Te explico:

Si tienes un campo id(autonumerico)

Ese campo no necesita llenarse el mismo sql lo llenara con el correlativo siquiente.

Necesitas un :
Ejmplo
insert into Tabla1 (lote , fecha) values ('0003' ,getdate() )
insert into Tabla2 (lote , fecha) values ('0003' ,getdate() )

solo eso ...y automaticamente en ambas tablas se guardara en campo id correlativo que sigue.

Ahora , No se a que te refieres con " fecha - correlativo(int) "
Estas declarando un campo "fecha-correltivo" de tipo "INT" , si es una fecha deberia ser datetime.

Ahora si lo quieres hacer manual. con un Max. Deberias dejar el campo id. como un campo normal sin el autonumerico.

Seria

Declare @correlativo int

set @correlativo = (select max(id) from tabla1)

insert into Tabla1 (id,lote , fecha) values (@correlativo ,'0003' ,getdate() )
insert into Tabla2 (id,lote , fecha) values (@correlativo ,'0003' ,getdate() )

Y asi de facil insertas el mismo correlativo en ambas tablas.

Espero te sirva .

saludos

Rolando Lau
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