SQL Server - Alguien puede?

   
Vista:

Alguien puede?

Publicado por Dany (3 intervenciones) el 19/09/2008 17:36:37
Hola tengo una tabla en SQL 2005 con 2 mil registros con los siguientes campos: mes,clave y monto. Por ejemplo:
Mes Clave Monto
1 PRQ147 $14,000
12 PRQ147 $16,000
11 TGC710 $ 5,000
12 TGC710 $ 5,000

En el campo mes necesito acompletar los meses del año que falten asociados con la misma clave , por ejemplo para la clave TGC710 necesito insertar los meses del 1 al 10 y para la clave PRQ147 insertar los meses del 2 al 11 con la misma clave y con monto $0, alquien podrá ayudarme?..... desde ya gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Alguien puede?

Publicado por Isaias (3308 intervenciones) el 19/09/2008 19:03:48
Si alguien propone algo mejor, adelante:

create table #prueba (mes int, clave char(6), Monto smallmoney, primary key (mes,clave))
Insert into #prueba values(1,'PRQ147',14000)
Insert into #prueba values(12,'PRQ147',16000)
Insert into #prueba values(11,'TGC710',5000)
Insert into #prueba values(12,'TGC710',5000)

create table #meses (mes int primary key)
insert into #meses values(1)
insert into #meses values(2)
insert into #meses values(3)
insert into #meses values(4)
insert into #meses values(5)
insert into #meses values(6)
insert into #meses values(7)
insert into #meses values(8)
insert into #meses values(9)
insert into #meses values(10)
insert into #meses values(11)
insert into #meses values(12)
select * from #meses

declare @clave char(6)
declare @mes int
declare @indice int
--create table #llave (id int identity(1,1), clave char(6))
insert into #llave (clave)
select distinct clave from #prueba
set @mes = 1
select top 1 @clave = clave, @indice = id from #llave order by id
while exists(select * from #llave)
begin
if not exists (select * from #prueba where clave = @clave and mes = @mes)
insert into #prueba values(@mes, @clave,0)
set @mes = @mes + 1
if @mes > 12
begin
delete #llave where id = @indice
select top 1 @clave = clave, @indice = id from #llave order by id
set @mes = 1
end
end
select * from #prueba order by 2,1
select * from #llave
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alguien puede?

Publicado por Dany (3 intervenciones) el 19/09/2008 19:13:11
Gracias pero creo que no me explique bien, sucede que tengo 480 claves distintas y tu sugerencia me muestra que debo hacer una por una...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alguien puede?

Publicado por Isaias (3308 intervenciones) el 19/09/2008 21:00:40
No amigo, hice el ejemplo con los datos que enviaste, pero si tuvieras 16 millones de claves distintas, trabajaria con las 16 millones de claves distintas....

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alguien puede?

Publicado por Isaias (3308 intervenciones) el 19/09/2008 21:03:15
Una observacion, quita el comentario en la creacion de la tabla #LLAVE, ya que cuando estuve haciendo las pruebas, lo ejecute varias veces y no queria que cada ejecucion me creara dicha tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alguien puede?

Publicado por Dany (3 intervenciones) el 19/09/2008 22:15:39
Lo probaré muchisimas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alguien puede?

Publicado por Isaias (3308 intervenciones) el 20/09/2008 02:27:56
De nada, suerte...........te sugiero que hagas un respaldo de tu tabla, o bien, lo hagas en una copia de tu tabla original.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar