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

[SOLUCIONADO] una misma tabla con campo incremental

Estas en el tema de una misma tabla con campo incremental en el foro de SQL Server en Foros del Web. Buenas tardes, tengo una tabla la cual tiene un campo año, se requiere que en una instrucción se filtre un año en especial y que ...
  #1 (permalink)  
Antiguo 16/09/2015, 15:05
 
Fecha de Ingreso: septiembre-2015
Mensajes: 39
Antigüedad: 9 años, 2 meses
Puntos: 0
Pregunta una misma tabla con campo incremental

Buenas tardes, tengo una tabla la cual tiene un campo año, se requiere que en una instrucción se filtre un año en especial y que al pasar los datos de la consulta al final de la tabla, ese campo que lleva el año pues, que al llenar la tabla sea consecutivo; es decir la suma del año consultado + 1.

La instrucción la tengo así por el momento pero no sé como indicar que el año se me incremente cuando pase los datos:

Select * from tabla_prueba
into tabla_prueba from tabla_prueba where annio = 2014

Mil gracias por su ayuda.
  #2 (permalink)  
Antiguo 16/09/2015, 16:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: una misma tabla con campo incremental

te explicas con peras y manzaas? porque la verdad no se entiende que quieres......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 16/09/2015, 19:20
 
Fecha de Ingreso: septiembre-2015
Mensajes: 39
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: una misma tabla con campo incremental

Cita:
Iniciado por Libras Ver Mensaje
te explicas con peras y manzaas? porque la verdad no se entiende que quieres......
Mira te explico, necesito completar el script que publiqué, el cual me hace una consulta a una tabla cuyo año se filtra en la consulta, el resultado va al final de la tabla como nuevos registros, la idea es que cuando se esté haciendo el insert (a través de la consulta select) automaticamente el año sea incrementado en +1, es decir, para el ejemplo todos los años de las filas filtradasson 2014, se introducen las filas con sus datos, pero el año debe ser un incremento del año 2014 + 1.
  #4 (permalink)  
Antiguo 16/09/2015, 19:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: una misma tabla con campo incremental

supongo que traes el valor del año en una variable no?? o de algun modo sabes que tu filtro es por el año 2014 supongamos que es algo asi:

Código SQL:
Ver original
  1. DECLARE @YEAR INT
  2. SET @YEAR=2014
  3.  
  4. SELECT *,@YEAR+1 AS new_year FROM tabla_prueba
  5. INTO tabla_prueba FROM tabla_prueba WHERE annio = @YEAR

Con eso ya obtienes lo que necesitas......a menos que no te haya entendido......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 17/09/2015, 08:01
 
Fecha de Ingreso: septiembre-2015
Mensajes: 39
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: una misma tabla con campo incremental

Cita:
Iniciado por Libras Ver Mensaje
supongo que traes el valor del año en una variable no?? o de algun modo sabes que tu filtro es por el año 2014 supongamos que es algo asi:

Código SQL:
Ver original
  1. DECLARE @YEAR INT
  2. SET @YEAR=2014
  3.  
  4. SELECT *,@YEAR+1 AS new_year FROM tabla_prueba
  5. INTO tabla_prueba FROM tabla_prueba WHERE annio = @YEAR

Con eso ya obtienes lo que necesitas......a menos que no te haya entendido......
Libras, gracias por tu respuesta a mi inquietud, sin embargo creo que algo está fallando en el query, porque al intentar correrlo en sql server 2000, el analizador de consultas indica que hay un error cerca de la palabra INTO.

Te aclaro un poco lo que pretendo hacer, y es así:
(1) La tabla tiene diversos campos e información en sus registros, uno de esos campos es el año (annio)
(2) Del campo año (annio), quiero copiar todos los registros del año anterior (annio = 2014) al final de la tabla,...pero que al momento de efectuar la copia de esos registros, en vez de que me copie el año 2014, el campo año (annio) de mi tabla no pase como 2014, sino como un incremento del año que estoy copiando.

Eso es lo que aún no he podido realizar, y pues quisiera que e pudieras colaborar con tu asesoría y experiencia en estos temas.

Mil gracias, amigo Libras.
  #6 (permalink)  
Antiguo 17/09/2015, 11:47
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: una misma tabla con campo incremental

Me falto la instruccion insert, ponla antes del into
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 17/09/2015, 13:01
 
Fecha de Ingreso: septiembre-2015
Mensajes: 39
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: una misma tabla con campo incremental

Cita:
Iniciado por Libras Ver Mensaje
Me falto la instruccion insert, ponla antes del into
Amigo Libras, gracias de nuevo por tu buena disposición en responder mi inquietud, pero tengo para decirte que el query corregido según tu indicación, me está generando un error : "Sintaxis incorrecta cerca de la palabra clave FROM".

La inquietud que me resulta ahora es que no necesito un campo más en la tabla, porque en la instrucción select dice: select *, @year+1 lo cual puede generarme un campo adicional y no es lo que se busca, sino más bien que al pasar los datos del año 2014 en la consulta como nuevos registros, estos queden en el campo año como un incremento del año que está filtrándose, es decir 2015.

Por favor indicame, qué cambios serán necesarios en el query.

Mil gracias amigo Libras.
  #8 (permalink)  
Antiguo 17/09/2015, 13:08
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: una misma tabla con campo incremental

Entonces al annio agregale el +1

Código SQL:
Ver original
  1. INSERT INTO tabla
  2. SELECT campo1,campo2...campon,annio +1 AS annio FROM tabla WHERE annio=2014
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 17/09/2015, 20:57
 
Fecha de Ingreso: septiembre-2015
Mensajes: 39
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: una misma tabla con campo incremental

Cita:
Iniciado por Libras Ver Mensaje
Entonces al annio agregale el +1

Código SQL:
Ver original
  1. INSERT INTO tabla
  2. SELECT campo1,campo2...campon,annio +1 AS annio FROM tabla WHERE annio=2014
Amigo Libras, gracias de nuevo por tu respuesta, al intentar correr el comando que me indicas, me sale el mensaje

"An explicit value for the identity column in table 'TABLA_PRUEBA' can only be specified when a column list is used and IDENTITY_INSERT is ON".

Si se usa el comando:
SET IDENTITY_INSERT tabla_prueba ON (aquí va la consulta sql)

no produce ningún efecto, quisera tu ayuda en este query.

Mil gracias
  #10 (permalink)  
Antiguo 18/09/2015, 07:29
 
Fecha de Ingreso: septiembre-2015
Mensajes: 39
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: una misma tabla con campo incremental

Cita:
Iniciado por rprado2008 Ver Mensaje
Amigo Libras, gracias de nuevo por tu respuesta, al intentar correr el comando que me indicas, me sale el mensaje

"An explicit value for the identity column in table 'TABLA_PRUEBA' can only be specified when a column list is used and IDENTITY_INSERT is ON".

Si se usa el comando:
SET IDENTITY_INSERT tabla_prueba ON (aquí va la consulta sql)

no produce ningún efecto, quisera tu ayuda en este query.

Mil gracias
Amigo Libras, agradezco todo el apoyo que me brindaste para esta pregunta que formulé, y gracias a esa buena ayuda pude por fin obtener el query requerido para llegar a la solución que necesitaba al respecto.
Tu planteamiento era incrementar el campo de la tabla annio sumandole +1; sinembargo eso me dió el error que te copié en mi mensaje anterior.

Sinembargo, si uso la clásula asi:

INSERT INTO tabla
SELECT campo1,campo2...campon, (select annio +1) AS annio FROM tabla WHERE annio=2014

El resultado es el correcto y no presenta errores.

Amigo Libras, de nuevo mil gracias por darme tu apoyo en esta pregunta.
  #11 (permalink)  
Antiguo 19/09/2015, 19:37
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: una misma tabla con campo incremental

El error q mencionas es debido a q en tu tabla tienes un campo identity y esos no se ponen en el inset(se obvian) y cuandi haces un insert into table select tienes q definir los campos cuando tienes un campo identity, el query quedaria

Insert into tabla values(campo1,campo2,campon)
Select campo1,campo2, annio +1 as annio from tabla
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: consulta-sql, sql-sentencia
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 04:00.