Estimados buenos días.
Tengo el siguiente inconveniente y espero que me puedan dar una mano.
Necesito contruir una tabla en tiempo de ejecución basada en otra tabla fisica que contiene información por mes, en la tabla fisica puedo tener información de algunos meses por ejemplo de enero a abril pero necesito que en la tabla final se cree 8 filas mas con los 8 meses restantes con saldo cero... Todo esto en SQL server 2008. He intentado con algun cursor y no logro decirle que despues del mes leido me siga agregardo los que faltan. Espero que me haya explicado.
desde ya les agradezco alguna idea de como hacerlo.
saludos y gracias.
Construir tabla en tiempo de ejecución
Comenzado por
bcp9520
, sep 26 2013 12:59
2 respuestas en este tema
#1
Escrito 26 septiembre 2013 - 12:59
#2
Escrito 02 abril 2014 - 09:13
esto te crea una tabla
y con esto podrias llenarla
lo mas seguro es que no es lo que necesitas porque solo entedi crear tabla y crear meses , ahi estan
delphi
create table #tablatemporal ( articulo varchar(10) , descripcion varchar(40) , ene float null, feb float null, mar float null, abr float null, may float null, jun float null, jul float null, ago float null, sep float null, oct float null, nov float null, dic float null )
y con esto podrias llenarla
delphi
insert into #tablatemporal select articulo as articulo, descripcion1 as descripcion1, [1],[2],[3], [4], [5],[6], [7], [8], [9], [10], [11], [12] FROM ( select va.periodo, va.Articulo, art.Descripcion1, va.cantidadneta from VentaArt va join Art on art.articulo=va.articulo where va.Ejercicio=2014 and va.Periodo in (1,2,3,4) ) as tbp pivot ( sum(cantidadNeta) for periodo in ( [1],[2],[3], [4], [5],[6], [7], [8], [9], [10], [11], [12] ) ) As p
lo mas seguro es que no es lo que necesitas porque solo entedi crear tabla y crear meses , ahi estan
#3
Escrito 03 abril 2014 - 09:11
Hola
Existe una propiedad muy utilizada que es la multiplicación de tuplas, esto ocurre cuando no se especifica el tipo del join entre las tablas, por lo tanto la respuesta es una combinación de las dos tablas, si juntas esto con la respuesta de ciskoKID, puedes obtener facilmente lo que necesitas.
Esta sentencia multiplicará las dos tablas, es decir que para cada tupla de la tabla1, se generarán una combinación por cada tupla de la tabla2.
Ej.
Saludos
Existe una propiedad muy utilizada que es la multiplicación de tuplas, esto ocurre cuando no se especifica el tipo del join entre las tablas, por lo tanto la respuesta es una combinación de las dos tablas, si juntas esto con la respuesta de ciskoKID, puedes obtener facilmente lo que necesitas.
delphi
Select * from tabla1, tabla2
Esta sentencia multiplicará las dos tablas, es decir que para cada tupla de la tabla1, se generarán una combinación por cada tupla de la tabla2.
Ej.
delphi
CREATE TABLE tabla1 ( codigo character varying(10) NOT NULL, nombre character varying(40), PRIMARY KEY (codigo) ); INSERT INTO tabla1 values('01','Valor 1'); INSERT INTO tabla1 values('02','Valor 2'); CREATE TABLE tabla2 ( codmes character varying(10) NOT NULL, nommes character varying(40), PRIMARY KEY (codmes) ); INSERT INTO tabla2 values('ENE','ENERO'); INSERT INTO tabla2 values('FEB','FEBRERO'); INSERT INTO tabla2 values('MAR','MARZO'); INSERT INTO tabla2 values('ABR','ABRIL'); INSERT INTO tabla2 values('MAY','MAYO'); INSERT INTO tabla2 values('JUN','JUNIO'); INSERT INTO tabla2 values('JUL','JULIO'); INSERT INTO tabla2 values('AGO','AGOSTO'); INSERT INTO tabla2 values('SEP','SEPTIEMBRE'); INSERT INTO tabla2 values('OCT','OCTUBRE'); INSERT INTO tabla2 values('NOV','NOVIEMBRE'); INSERT INTO tabla2 values('DIC','DICIEMBRE'); SELECT * FROM TABLA1, TABLA2 codigo;nombre;codmes;nommes "01";"Valor 1";"ENE";"ENERO" "01";"Valor 1";"FEB";"FEBRERO" "01";"Valor 1";"MAR";"MARZO" "01";"Valor 1";"ABR";"ABRIL" "01";"Valor 1";"MAY";"MAYO" "01";"Valor 1";"JUN";"JUNIO" "01";"Valor 1";"JUL";"JULIO" "01";"Valor 1";"AGO";"AGOSTO" "01";"Valor 1";"SEP";"SEPTIEMBRE" "01";"Valor 1";"OCT";"OCTUBRE" "01";"Valor 1";"NOV";"NOVIEMBRE" "01";"Valor 1";"DIC";"DICIEMBRE" "02";"Valor 2";"ENE";"ENERO" "02";"Valor 2";"FEB";"FEBRERO" "02";"Valor 2";"MAR";"MARZO" "02";"Valor 2";"ABR";"ABRIL" "02";"Valor 2";"MAY";"MAYO" "02";"Valor 2";"JUN";"JUNIO" "02";"Valor 2";"JUL";"JULIO" "02";"Valor 2";"AGO";"AGOSTO" "02";"Valor 2";"SEP";"SEPTIEMBRE" "02";"Valor 2";"OCT";"OCTUBRE" "02";"Valor 2";"NOV";"NOVIEMBRE" "02";"Valor 2";"DIC";"DICIEMBRE"
Saludos