Ayuda con Query

30/05/2008 - 02:13 por Juan Huachaca | Informe spam
Amigos, que tal siempre hago esta consulta cuando quiero totalizar
registros, como lo podria resumir, sugerencias para mejorar mi programacion
??

gracias !!!

ALTER PROCEDURE COM_VER_CREMARCAENFECHAS
@sFechaini varchar(15),
@sFechafin varchar(15)
AS

SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRANSACTION

declare @sFechai varchar(100)
declare @sFechaf varchar(100)

set @sFechai = rtrim(@sFechaini) + ' 00:00:00'
set @sFechaf = rtrim(@sFechafin) + ' 23:59:59'

select a.idproduto,
a.idsub,
a.idmarca,
Marca = a.descricao,
a.idfabricante,
Fabricante = b.descricao,
fecha_alta = a.dtCriacao,
fecha_Actu = a.dtAtualizacao,
reg = null
into #marcas
from peru..a_marcaproduto a,
peru..a_fabricanteproduto b
where (a.idproduto = b.idproduto
and a.idsub = b.idsub
and a.idfabricante = b.idFabricante)
and (a.DtCriacao BETWEEN CONVERT(DATETIME, @sFechai) AND CONVERT(DATETIME,
@sFechaf)
or a.DtAtualizacao BETWEEN CONVERT(DATETIME, @sFechai) AND
CONVERT(DATETIME, @sFechaf))
order by a.idproduto, a.idsub, a.idmarca

select a.idproduto,
a.idsub,
a.idmarca,
reg = count(*)
into #registros
from #marcas a,
peru..a_artigo b
where a.idproduto = b.idproduto
and a.idsub = b.idsub
and a.idmarca = b.idmarca
group by a.idproduto,
a.idsub,
a.idmarca

update #marcas
set reg = b.reg
from #marcas a,
#registros b
where a.idproduto = b.idproduto
and a.idsub = b.idsub
and a.idmarca = b.idmarca

select *
from #marcas

drop table #marcas

COMMIT TRANSACTION


Salu2

Juan Huachaca Gomez
msn: juanhuachaca@hotmail.com
Lima - Peru
 

Leer las respuestas

#1 Maxi Accotto
31/05/2008 - 02:42 | Informe spam
Hola yo te recomendaria sacar los into a las tablas temporales y el update,
porque no resuelves todo en un solo select? yo que tu reviso el uso de la
sentencia CASE la cual de seguro te ayudara a sacar gran parte del codigo
que tienes y usar solo un select


Saludos
Maxi Accotto
Microsoft MVP en SQLServer
SQltotalconsulting
-

"Juan Huachaca" escribió en el mensaje de
noticias:
Amigos, que tal siempre hago esta consulta cuando quiero totalizar
registros, como lo podria resumir, sugerencias para mejorar mi
programacion ??

gracias !!!

ALTER PROCEDURE COM_VER_CREMARCAENFECHAS
@sFechaini varchar(15),
@sFechafin varchar(15)
AS

SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRANSACTION

declare @sFechai varchar(100)
declare @sFechaf varchar(100)

set @sFechai = rtrim(@sFechaini) + ' 00:00:00'
set @sFechaf = rtrim(@sFechafin) + ' 23:59:59'

select a.idproduto,
a.idsub,
a.idmarca,
Marca = a.descricao,
a.idfabricante,
Fabricante = b.descricao,
fecha_alta = a.dtCriacao,
fecha_Actu = a.dtAtualizacao,
reg = null
into #marcas
from peru..a_marcaproduto a,
peru..a_fabricanteproduto b
where (a.idproduto = b.idproduto
and a.idsub = b.idsub
and a.idfabricante = b.idFabricante)
and (a.DtCriacao BETWEEN CONVERT(DATETIME, @sFechai) AND
CONVERT(DATETIME, @sFechaf)
or a.DtAtualizacao BETWEEN CONVERT(DATETIME, @sFechai) AND
CONVERT(DATETIME, @sFechaf))
order by a.idproduto, a.idsub, a.idmarca

select a.idproduto,
a.idsub,
a.idmarca,
reg = count(*)
into #registros
from #marcas a,
peru..a_artigo b
where a.idproduto = b.idproduto
and a.idsub = b.idsub
and a.idmarca = b.idmarca
group by a.idproduto,
a.idsub,
a.idmarca

update #marcas
set reg = b.reg
from #marcas a,
#registros b
where a.idproduto = b.idproduto
and a.idsub = b.idsub
and a.idmarca = b.idmarca

select *
from #marcas

drop table #marcas

COMMIT TRANSACTION


Salu2

Juan Huachaca Gomez
msn:
Lima - Peru

Preguntas similares