Una tabla por cada año y UNION

09/10/2004 - 12:13 por Pedro Jose Caceres | Informe spam
Tengo una tabla de movimientos para cada año, MOV2003, MOV2004, etc.
Cuando se cierra un año por tanto, tengo que crear la nueva tabla
correspondiente al nuevo año. Puedo hacer el CREATE TABLE en t-sql sin
tener que sacar los usuarios del sistema ? Como puedo tomar la estructura de
otra de las tablas ya existentes para que se cree igual ?

Otra cosa es que para en una consulta ver movimientos que abarque dos o mas
años, hago una UNION, preparando dinamicamente la instruccion SELECT desde
la aplicacion y enviandola por odbc al servidor. Por ej. si la lista de
movimientos abarca va desde el 01/04/2001 al 31/03/2004, estoy armando desde
el front-end la union asi::


SELECT columna1, .., from MOV2001 WHERE ITEM='ELITEM' FECHA>/04/2001
UNION
SELECT columna1, .., from MOV2002 WHERE ITEM='ELITEM'
UNION
SELECT columna1, .., from MOV2003 WHERE ITEM='ELITEM'
UNION
SELECT columna1, .., from MOV2004 WHERE FECHA<1/03/2004
ORDER BY FECHA


Consideran que sea esta la mejor forma para hacer esto ?

De no ser, que otras opciones hay para extraer esta informacion quizas en un
SP del mismo servidor?

Gracias
 

Leer las respuestas

#1 Miguel Egea
09/10/2004 - 16:32 | Informe spam
1. No hace falta que saques a los usuarios, genera el script de tu tabla y
lo puedes lanzar con otro nombre cuando quieras
2.- No uses union, usa en todo caso UNION ALL, union te hace la intersección
(de elementos disjuntos en tu caso) después de traerse los daots.
3.- No se como es de grande tu tabla de movimientos ni que te ha llevado a
partirla, ni cual es su clave primaria y que tamaño tiene, así que si no te
va mal, debe ser una opción adecuada, si te va mal cuentanos que sintomas
tiene y vemos que remedios podemos poner..


-
Miguel Egea Gómez
Microsoft SQL-Server MVP
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?


"Pedro Jose Caceres" escribió en el mensaje
news:%
Tengo una tabla de movimientos para cada año, MOV2003, MOV2004, etc.
Cuando se cierra un año por tanto, tengo que crear la nueva tabla
correspondiente al nuevo año. Puedo hacer el CREATE TABLE en t-sql sin
tener que sacar los usuarios del sistema ? Como puedo tomar la estructura


de
otra de las tablas ya existentes para que se cree igual ?

Otra cosa es que para en una consulta ver movimientos que abarque dos o


mas
años, hago una UNION, preparando dinamicamente la instruccion SELECT


desde
la aplicacion y enviandola por odbc al servidor. Por ej. si la lista de
movimientos abarca va desde el 01/04/2001 al 31/03/2004, estoy armando


desde
el front-end la union asi::


SELECT columna1, .., from MOV2001 WHERE ITEM='ELITEM' FECHA>/04/2001
UNION
SELECT columna1, .., from MOV2002 WHERE ITEM='ELITEM'
UNION
SELECT columna1, .., from MOV2003 WHERE ITEM='ELITEM'
UNION
SELECT columna1, .., from MOV2004 WHERE FECHA<1/03/2004
ORDER BY FECHA


Consideran que sea esta la mejor forma para hacer esto ?

De no ser, que otras opciones hay para extraer esta informacion quizas en


un
SP del mismo servidor?

Gracias


Preguntas similares