SQL - Como insertar un registro incrementado en 1

 
Vista:

Como insertar un registro incrementado en 1

Publicado por David Lopez (2 intervenciones) el 21/02/2008 21:43:42
Buenas noches. Estoy aqui atascado con una sentencia en Access y en SQL. Os cuento: Es la tipica aplicación de facturación. Antes tenia el número de factura autonumérico, pero la clienta lo quiere manual, ya que el año ya esta empezado (lógico). La rutina en cuestión introducía automaticamente la cabecera de las facturas de las liquidaciones:

INSERT INTO factura_emitida ( fecha, tipo_cliente, id, iva, forma_pago, pagada )
SELECT date() AS fecha, "Socio" AS tipo_cliente, sf.num_socio AS id, i.iva, "Liquidacion " & date() AS forma_pago, yes AS pagada
FROM [RUTINA LIQS Socios a los que crear facturas] AS sf, [RUTINA LIQS Tipos de IVA de facturas a crear] AS i
WHERE sf.num_socio=i.num_socio;

Nota: La clave de factura_emitida es num_factura, q repito, era autonumerico, por lo que no habia problema alguno.

Simplemente me gustaria saber como hacer algo similar a lo siguiente:

INSERT INTO factura_emitida ( num_factura, fecha, tipo_cliente, id, iva, forma_pago, pagada )
SELECT max(f.num_factura) INCREMENTANDOSE EN UNO EN CADA LINEA, date() AS fecha, "Socio" AS tipo_cliente, sf.num_socio AS id, i.iva, "Liquidacion " & date() AS forma_pago, yes AS pagada
FROM [RUTINA LIQS Socios a los que crear facturas] AS sf, [RUTINA LIQS Tipos de IVA de facturas a crear] AS i, factura_emitida as f
WHERE sf.num_socio=i.num_socio;

No se si me he explicado bien. A ver si me ayudais.
Gracias.
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:Como insertar un registro incrementado en 1

Publicado por David López (2 intervenciones) el 21/02/2008 22:27:26
Para ayudar, os muuestro la información que sale al ejecutar la consulta con el autonumerico:

fecha tipo_cliente id iva forma_pago pagada
21/02/2008 Socio 1 7,00% Liquidacion 21/02/2008 -1
21/02/2008 Socio 2 4,00% Liquidacion 21/02/2008 -1
21/02/2008 Socio 2 7,00% Liquidacion 21/02/2008 -1
21/02/2008 Socio 3 16,00% Liquidacion 21/02/2008 -1
21/02/2008 Socio 58 7,00% Liquidacion 21/02/2008 -1

Lo que quisiera hacer es que suponiendo que Max(num_factura) es 45:

num_factura fecha tipo_cliente id iva forma_pago pagada
46 21/02/2008 Socio 1 7,00% Liquidacion -1 47 21/02/2008 Socio 2 4,00% Liquidacion -1
etc

Gracias de nuevo...
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
sin imagen de perfil

RE:Como insertar un registro incrementado en 1

Publicado por Liliana (426 intervenciones) el 22/02/2008 14:00:35
Hola David,
Te cuento como lo hago en MS SQL Server, a lo mejor te sirve la idea y podés adaptarla a tus necesidades:

Tengo una tabla llamada Numerador, que tiene el último nro de factura emitida, y cada vez que vuelvo a facturar, se incrementa en 1.

-- Parte del código:
DECLARE @Numero int
BEGIN TRAN

-- Asignación de Numero de Pedido
-- Actualiza tabla con número asignado
UPDATE Numerador
SET @Numero = NUM_Numero = NUM_Numero + 1
WHERE NUM_Sucursal = @SucursalID

IF @@ERROR <> 0
BEGIN ROLLBACK TRAN RETURN END

INSERT Facturas
SELECT @Numero, .....

IF @@ERROR <> 0
BEGIN ROLLBACK TRAN RETURN END

COMMIT TRAN

Saludos,
Liliana.
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

RE:Como insertar un registro incrementado en 1

Publicado por JorgeA (3 intervenciones) el 23/04/2010 19:30:50
buenas, yo tengo el mismo problema que david, solo que yo quisiera saber como hacerlo en un solo query que me tome el No. 46 segun el ejemplo de facturas expuesto por david y como la consulta puede traerme mas de un registro que a los registros siguientes vaya incrementandolos en uno.

Gracias.
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