Insertar Registros nuevos, un poco lioso
Publicado por JoseM (23 intervenciones) el 21/02/2007 17:08:30
Buenas, es un tanto lioso y me imagino que se podrá solucionar usando tablas temporales, pero si es posible prefiero evitar eso.
Tengo una tabla ya creada con X registros, digamos que 300, y el Id es manual.
Mediante una consulta quiero hacer una selección de ciertos campos y diferentes tablas para que el resultado lo inserte en la tabla con X registros.
Por lo que antes lo que tengo que hacer es un Max(Id) para saber el último id y sumarle 1 cuando haga un insert poniéndole el nuevo id.
Esa es mi idea, el problema es que si de la Select me sale como resultado más de un registro, no podré insertarlos con ese método ya que todos intentaría insertarlos aplicando al campo ID el mismo valor.
SELECT @ORDEN = max(E.ORDEN) FROM BBDD.DBO.TABLA1 E
WHERE E.TIPO = @TIPO
SET @ORDEN=@ORDEN+1
INSERT INTO bbdd.DBO.TABLATEMPORAL
(Fecha, tipo, orden, telefono, autopista, HoMedico, Hoats, fechaenlace, emprefac, colectivo )
SELECT FECHA=D.FECHA,,@TIPO,@ORDEN,X.TELEFONO,D.AUTOPISTA,D.HOMEDICO,D.HOATS,
D.FECHAENLACE,D.EMPREFAC,D.COLECTIVO
FROM BBDD.DBO.DIA D JOIN BBDD.DBO.EXT X ON D.FECHA = X.FECHA
AND D.MASREG=X.MASREG AND D.REGION=X.REGION
Tengo una tabla ya creada con X registros, digamos que 300, y el Id es manual.
Mediante una consulta quiero hacer una selección de ciertos campos y diferentes tablas para que el resultado lo inserte en la tabla con X registros.
Por lo que antes lo que tengo que hacer es un Max(Id) para saber el último id y sumarle 1 cuando haga un insert poniéndole el nuevo id.
Esa es mi idea, el problema es que si de la Select me sale como resultado más de un registro, no podré insertarlos con ese método ya que todos intentaría insertarlos aplicando al campo ID el mismo valor.
SELECT @ORDEN = max(E.ORDEN) FROM BBDD.DBO.TABLA1 E
WHERE E.TIPO = @TIPO
SET @ORDEN=@ORDEN+1
INSERT INTO bbdd.DBO.TABLATEMPORAL
(Fecha, tipo, orden, telefono, autopista, HoMedico, Hoats, fechaenlace, emprefac, colectivo )
SELECT FECHA=D.FECHA,,@TIPO,@ORDEN,X.TELEFONO,D.AUTOPISTA,D.HOMEDICO,D.HOATS,
D.FECHAENLACE,D.EMPREFAC,D.COLECTIVO
FROM BBDD.DBO.DIA D JOIN BBDD.DBO.EXT X ON D.FECHA = X.FECHA
AND D.MASREG=X.MASREG AND D.REGION=X.REGION
Valora esta pregunta


0