none
Hacer una copia de una base de datos, cambiando datos de la misma RRS feed

  • Pregunta

  • Hola amigos como estan, tengo una apliacion donde tengo una base de datos de SQL Server en la tabla de Movimientos capturo un periodo como 001/2016 y un fecha de entrada 01/01/2016 - 31/12/2016 entonces lo que quiero hacer es una copia exacta de la tabla Movimientos pero que donde tenga el periodo 001/2016 lo pase 001/2017 y la fecha que sea de 01/01/2017 - 31/12/2017 pero que me quede el historial del 2016 a ver si me pueden apoyar, se que no hay un boton para hacerlo me gustaria orientar o como puedo armar el query para hacerlo.... gracias por su tiempo...

    Saludos y bendiciones!...


    _ José Ángel Salinas Paz

    martes, 31 de enero de 2017 23:26

Respuestas

  • El query sería más o menos así:

    Insert into NuevosMovimientos(Periodo, fecha, otrosDatos) Select '001/2017' as Periodo, DateAdd(year, 1, Fecha) as Fecha, OtrosDatos From Movimientos Where Fecha>='20160101' And Fecha<'20170101'


    miércoles, 1 de febrero de 2017 7:44
  • esto quiere decir que los tengo que poner en otra table verdad?

    No necesariamente. Te puse "NuevosMovimientos" por poner un ejemplo, pero la sentencia también es legítima si pones la misma tabla en los dos lados, es decir:

    Insert into Movimientos ... Select from Movimientos ...

    Esto selecciona registros de la tabla y los vuelve a meter en la misma tabla.

    • Marcado como respuesta JA Salinas viernes, 3 de febrero de 2017 17:48
    miércoles, 1 de febrero de 2017 18:58
  • Fíjate que no concuerdan los datos que recuperas en el select con los que insertas en el Insert (Insertas Codigo, Fechtran, Fechaini, Fechaexp,... pero seleccionas Fechaini, Fechaexp, Codigo, Fechatran, ...). La sentencia los empareja por su posición, no por su nombre, así que tienes que seleccionar las columnas en el mismo orden que las columnas que insertas.
    • Propuesto como respuesta Joyce_ACModerator viernes, 3 de febrero de 2017 16:11
    • Marcado como respuesta JA Salinas viernes, 3 de febrero de 2017 17:48
    jueves, 2 de febrero de 2017 7:41

Todas las respuestas

  • El query sería más o menos así:

    Insert into NuevosMovimientos(Periodo, fecha, otrosDatos) Select '001/2017' as Periodo, DateAdd(year, 1, Fecha) as Fecha, OtrosDatos From Movimientos Where Fecha>='20160101' And Fecha<'20170101'


    miércoles, 1 de febrero de 2017 7:44
  • Hola Alberto gracias por contestar, esto quiere decir que los tengo que poner en otra table verdad?, podria ponerlos en la misma tabla?... mi pregunta va porque ahi tengo que el codigo de equipo sea unico... tengo que crearlo en otra tabla y redirigir las consultas para alla... verdad?...

    _ José Ángel Salinas Paz

    miércoles, 1 de febrero de 2017 17:14
  • esto quiere decir que los tengo que poner en otra table verdad?

    No necesariamente. Te puse "NuevosMovimientos" por poner un ejemplo, pero la sentencia también es legítima si pones la misma tabla en los dos lados, es decir:

    Insert into Movimientos ... Select from Movimientos ...

    Esto selecciona registros de la tabla y los vuelve a meter en la misma tabla.

    • Marcado como respuesta JA Salinas viernes, 3 de febrero de 2017 17:48
    miércoles, 1 de febrero de 2017 18:58
  • Hola Alberto mira este es Query...

    INSERT INTO Registro_EQ (Codigo, Fechtran, Fechaini, Fechaexp, IDCONF, Descripcion, Marca, Modelo, Serie, ConLista, Porcentaje_cl, SinLista, Porcentaje_sl, Movible,
                Porcentaje_mv, Edificio, Porcentaje_ed, Automatico, Exceso, Porcentaje_ex, Asignacion, Estatus, IDUsuario)
    SELECT DATEADD(year, 1, Fechaini) as Fechaini, DATEADD(year, 1, Fechaexp) as Fechaexp,
           [Codigo] , [Fechtran], [IDCONF], [Descripcion], [Marca], [Modelo], [Serie], [ConLista], [Porcentaje_cl], [SinLista], [Porcentaje_sl], [Movible],
           [Porcentaje_mv], [Edificio], [Porcentaje_ed], [Automatico], [Exceso], [Porcentaje_ex], [Asignacion], [Estatus], [IDUsuario]
      FROM [Pru].[dbo].[Registro_EQ]
      WHERE Fechaini >= '2016-01-01' AND Fechaini < '2017-01-01'

    Ya corri solo a partir del Select pero ya al hacer el into me manda el siguiente error:

    Msg 241, Level 16, State 1, Line 1
    Conversion failed when converting date and/or time from character string.

    Buscando por ahi me dice que es el formato para insertar la fecha pero yo lo estoy tomando del que ya esta en la base de datos, gracias Alberto pot tiempo espero puedas seguir apoyandome bendiciones!...


    _ José Ángel Salinas Paz

    miércoles, 1 de febrero de 2017 22:33
  • Fíjate que no concuerdan los datos que recuperas en el select con los que insertas en el Insert (Insertas Codigo, Fechtran, Fechaini, Fechaexp,... pero seleccionas Fechaini, Fechaexp, Codigo, Fechatran, ...). La sentencia los empareja por su posición, no por su nombre, así que tienes que seleccionar las columnas en el mismo orden que las columnas que insertas.
    • Propuesto como respuesta Joyce_ACModerator viernes, 3 de febrero de 2017 16:11
    • Marcado como respuesta JA Salinas viernes, 3 de febrero de 2017 17:48
    jueves, 2 de febrero de 2017 7:41
  • Amigo Alberto excelente respuesta gracias por tus consejos, ya quedo, que Dios te siga bendiciendo y te de sabiduria para que nos sigas apoyando, bendiciones para ti y tu familia...

    Saludos!...


    _ José Ángel Salinas Paz

    viernes, 3 de febrero de 2017 17:48