Consulta lenta

03/08/2007 - 22:12 por Adriana R | Informe spam
Hola
Tengo un servidor en produción en SQL Server 2000, con el último service
pack. Mi problema es que cuando ejecuto un procedimiento con un valor
especifico este tarda mas de 1 minuto, mientras que con cualquier otra
consulta se ejecuta en menos de 2 seg. El procedimiento hace selects a
varias tablas y regresa varios record set.
Ya reindexamos y se sigue presentando. No importa la hora en que se ejcute
siempre tarda lo mismo. Ya revise los registros por si tenian algo raro y no
encontre nada.
Al otro día la consulta se normaliza pero me presenta otro valor con el
problema. Tendrán alguna idea.

Preguntas similare

Leer las respuestas

#1 Marcos Mellibovsky
03/08/2007 - 22:16 | Informe spam
Hola Adriana,
podes pasar la consulta?

Saludos
Marcos Mellibovsky
MCT MCTS MCSD.NET MCDBA MCSE...
Córdoba Argentina

"Adriana R" wrote in message
news:
Hola
Tengo un servidor en produción en SQL Server 2000, con el último service
pack. Mi problema es que cuando ejecuto un procedimiento con un valor
especifico este tarda mas de 1 minuto, mientras que con cualquier otra
consulta se ejecuta en menos de 2 seg. El procedimiento hace selects a
varias tablas y regresa varios record set.
Ya reindexamos y se sigue presentando. No importa la hora en que se ejcute
siempre tarda lo mismo. Ya revise los registros por si tenian algo raro y
no
encontre nada.
Al otro día la consulta se normaliza pero me presenta otro valor con el
problema. Tendrán alguna idea.


Respuesta Responder a este mensaje
#2 Adriana R
03/08/2007 - 22:32 | Informe spam
eS UN PROCEDIMIENTO
CREATE PROCEDURE ID_DM_Reporte
@sFechaProceso char(8),--aaaammdd
@sPlazaSuc char(6),
@iTipoLoteID tinyint
AS
select s.PlazaSuc,Descripcion= 'Sobrantes (Free)',count(*) as Doc
from vwCheqDM v inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso=
@sFechaProceso and l.TipoLoteID =@iTipoLoteID
group by s.PlazaSuc
Union all
select @sPlazaSuc, Descripcion='Sobrantes (Free)',0 as Doc
WHERE( select count (*) from vwCheqDM v inner join documentos d on
v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid inner join vwsuc s on
s.SucursalID = l.SucursalID
where s.PlazaSuc = @sPlazaSuc and FechaProceso =@sFechaProceso and
l.TipoLoteID =@iTipoLoteID and CSdm is null )=0
Union all
select PlazaSuc, Descripcion='Faltantes (Missing)',count(*) as Doc
from vwCheqDMTI v
where CS is null and PlazaSuc = @sPlazaSuc and FechaContabledm=
@sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID
group by PlazaSuc
Union all
select @sPlazaSuc, Descripcion='Faltantes (Missing)',0 as Doc
WHERE( select count (*) from vwcheqdm where PlazaSuc = @sPlazaSuc and
FechaContableDM= @sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID and cs is null)=0
UNION ALL
select PlazaSuc, Descripcion='Reversos',count(*) as Doc
from vwCheqDM v
where PlazaSuc = @sPlazaSuc and FechaContabledm= @sFechaProceso and
Status = '02' and TipoLoteID =@iTipoLoteID
group by PlazaSuc
Union all
select @sPlazaSuc, Descripcion='Reversos',0 as Doc
WHERE( select count (*) from vwcheqdm where PlazaSuc = @sPlazaSuc and
FechaContableDM= @sFechaProceso and
Status = '02' and TipoLoteID =@iTipoLoteID)=0
Union all
select s.PlazaSuc,Descripcion= 'Correctos Ok',count(*) as Doc
from vwCheqDMTI v inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid and v.TipoLoteID=l.TipoLoteID
and FechaProceso=FechaContabledm
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is not null and s.PlazaSuc = @sPlazaSuc and FechaProceso=
@sFechaProceso and l.TipoLoteID =@iTipoLoteID and status='01'
group by s.PlazaSuc
select s.PlazaSuc,l.Loteid, count(*) as Doc
from vwCheqDM v inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso=
@sFechaProceso and l.TipoLoteID =@iTipoLoteID
group by s.PlazaSuc, l.loteid

select s.PlazaSuc,l.Loteid, CS, Transito , NoCta, Nocheque,Importe
,l.Monedaid
from vwCheqDM v inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso=
@sFechaProceso and l.TipoLoteID =@iTipoLoteID
order by l.loteid
select PlazaSuc, Terminal,count(*) as doc
from vwCheqDM v
where CS is null and PlazaSuc = @sPlazaSuc and FechaContabledm=
@sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID
group by PlazaSuc, Terminal
select PlazaSuc, Terminal,CS=csdm, Transito=Transitodm , NoCta=NoCtadm,
Nocheque =Nochequedm,Importe=Importedm ,Moneda,Status
from vwCheqDMTI v
where CS is null and PlazaSuc = @sPlazaSuc and FechaContabledm=
@sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID
order by Terminal
select PlazaSuc, Terminal,count(*)
from vwCheqDM v
where PlazaSuc = @sPlazaSuc and FechaContabledm= @sFechaProceso and
Status = '02' and TipoLoteID =@iTipoLoteID
group by PlazaSuc, Terminal
select PlazaSuc, Terminal,CS=csdm, Transito=Transitodm , NoCta=NoCtadm,
Nocheque =Nochequedm,Importe=Importedm ,Moneda,Status
from vwCheqDM v
where PlazaSuc = @sPlazaSuc and FechaContabledm= @sFechaProceso and
Status = '02' and TipoLoteID =@iTipoLoteID
order by Terminal
select s.PlazaSuc,l.Loteid, CS, Transito , NoCta, Nocheque,Importe
,l.Monedaid,v.Terminal,status
from vwCheqDMTI v inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid and v.TipoLoteID=l.TipoLoteID and
FechaProceso=FechaContabledm
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is not null and s.PlazaSuc = @sPlazaSuc and FechaProceso=
@sFechaProceso and l.TipoLoteID =@iTipoLoteID and status='01'
order by l.loteid
GO


"Marcos Mellibovsky" wrote:

Hola Adriana,
podes pasar la consulta?

Saludos
Marcos Mellibovsky
MCT MCTS MCSD.NET MCDBA MCSE...
Córdoba Argentina

"Adriana R" wrote in message
news:
> Hola
> Tengo un servidor en produción en SQL Server 2000, con el último service
> pack. Mi problema es que cuando ejecuto un procedimiento con un valor
> especifico este tarda mas de 1 minuto, mientras que con cualquier otra
> consulta se ejecuta en menos de 2 seg. El procedimiento hace selects a
> varias tablas y regresa varios record set.
> Ya reindexamos y se sigue presentando. No importa la hora en que se ejcute
> siempre tarda lo mismo. Ya revise los registros por si tenian algo raro y
> no
> encontre nada.
> Al otro día la consulta se normaliza pero me presenta otro valor con el
> problema. Tendrán alguna idea.
>
>



Respuesta Responder a este mensaje
#3 principiante
03/08/2007 - 23:18 | Informe spam
Uff... con razón está tan lenta. :)

Aparte de lo compleja de la consulta en si misma te recomiendo que crees
nuevos indices basados en esos where's que usas tambien que trates de
suprimir subconsultas en el where para count(*) usando left joins quizas, en
general ver como reestructurar la consulta.


Jose TH



"Adriana R" escribió en el mensaje
news:
eS UN PROCEDIMIENTO
CREATE PROCEDURE ID_DM_Reporte
@sFechaProceso char(8),--aaaammdd
@sPlazaSuc char(6),
@iTipoLoteID tinyint
AS
select s.PlazaSuc,Descripcion= 'Sobrantes (Free)',count(*) as Doc
from vwCheqDM v inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso> @sFechaProceso and l.TipoLoteID =@iTipoLoteID
group by s.PlazaSuc
Union all
select @sPlazaSuc, Descripcion='Sobrantes (Free)',0 as Doc
WHERE( select count (*) from vwCheqDM v inner join documentos d on
v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid inner join vwsuc s on
s.SucursalID = l.SucursalID
where s.PlazaSuc = @sPlazaSuc and FechaProceso =@sFechaProceso and
l.TipoLoteID =@iTipoLoteID and CSdm is null )=0
Union all
select PlazaSuc, Descripcion='Faltantes (Missing)',count(*) as Doc
from vwCheqDMTI v
where CS is null and PlazaSuc = @sPlazaSuc and FechaContabledm> @sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID
group by PlazaSuc
Union all
select @sPlazaSuc, Descripcion='Faltantes (Missing)',0 as Doc
WHERE( select count (*) from vwcheqdm where PlazaSuc = @sPlazaSuc and
FechaContableDM= @sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID and cs is null)=0
UNION ALL
select PlazaSuc, Descripcion='Reversos',count(*) as Doc
from vwCheqDM v
where PlazaSuc = @sPlazaSuc and FechaContabledm= @sFechaProceso and
Status = '02' and TipoLoteID =@iTipoLoteID
group by PlazaSuc
Union all
select @sPlazaSuc, Descripcion='Reversos',0 as Doc
WHERE( select count (*) from vwcheqdm where PlazaSuc = @sPlazaSuc and
FechaContableDM= @sFechaProceso and
Status = '02' and TipoLoteID =@iTipoLoteID)=0
Union all
select s.PlazaSuc,Descripcion= 'Correctos Ok',count(*) as Doc
from vwCheqDMTI v inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid and v.TipoLoteID=l.TipoLoteID
and FechaProceso=FechaContabledm
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is not null and s.PlazaSuc = @sPlazaSuc and FechaProceso> @sFechaProceso and l.TipoLoteID =@iTipoLoteID and status='01'
group by s.PlazaSuc
select s.PlazaSuc,l.Loteid, count(*) as Doc
from vwCheqDM v inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso> @sFechaProceso and l.TipoLoteID =@iTipoLoteID
group by s.PlazaSuc, l.loteid

select s.PlazaSuc,l.Loteid, CS, Transito , NoCta, Nocheque,Importe
,l.Monedaid
from vwCheqDM v inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso> @sFechaProceso and l.TipoLoteID =@iTipoLoteID
order by l.loteid
select PlazaSuc, Terminal,count(*) as doc
from vwCheqDM v
where CS is null and PlazaSuc = @sPlazaSuc and FechaContabledm> @sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID
group by PlazaSuc, Terminal
select PlazaSuc, Terminal,CS=csdm, Transito=Transitodm , NoCta=NoCtadm,
Nocheque =Nochequedm,Importe=Importedm ,Moneda,Status
from vwCheqDMTI v
where CS is null and PlazaSuc = @sPlazaSuc and FechaContabledm> @sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID
order by Terminal
select PlazaSuc, Terminal,count(*)
from vwCheqDM v
where PlazaSuc = @sPlazaSuc and FechaContabledm= @sFechaProceso and
Status = '02' and TipoLoteID =@iTipoLoteID
group by PlazaSuc, Terminal
select PlazaSuc, Terminal,CS=csdm, Transito=Transitodm , NoCta=NoCtadm,
Nocheque =Nochequedm,Importe=Importedm ,Moneda,Status
from vwCheqDM v
where PlazaSuc = @sPlazaSuc and FechaContabledm= @sFechaProceso and
Status = '02' and TipoLoteID =@iTipoLoteID
order by Terminal
select s.PlazaSuc,l.Loteid, CS, Transito , NoCta, Nocheque,Importe
,l.Monedaid,v.Terminal,status
from vwCheqDMTI v inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid and v.TipoLoteID=l.TipoLoteID
and
FechaProceso=FechaContabledm
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is not null and s.PlazaSuc = @sPlazaSuc and FechaProceso> @sFechaProceso and l.TipoLoteID =@iTipoLoteID and status='01'
order by l.loteid
GO


"Marcos Mellibovsky" wrote:

Hola Adriana,
podes pasar la consulta?

Saludos
Marcos Mellibovsky
MCT MCTS MCSD.NET MCDBA MCSE...
Córdoba Argentina

"Adriana R" wrote in message
news:
> Hola
> Tengo un servidor en produción en SQL Server 2000, con el último
> service
> pack. Mi problema es que cuando ejecuto un procedimiento con un valor
> especifico este tarda mas de 1 minuto, mientras que con cualquier otra
> consulta se ejecuta en menos de 2 seg. El procedimiento hace selects a
> varias tablas y regresa varios record set.
> Ya reindexamos y se sigue presentando. No importa la hora en que se
> ejcute
> siempre tarda lo mismo. Ya revise los registros por si tenian algo raro
> y
> no
> encontre nada.
> Al otro día la consulta se normaliza pero me presenta otro valor con el
> problema. Tendrán alguna idea.
>
>



Respuesta Responder a este mensaje
#4 Adriana R
04/08/2007 - 07:04 | Informe spam
Ya existen los indices, de hecho la consulta trabaja bien en casi todos los
casos, aleatoriamente con una plaza se tarda muchisimo. Hata ahora una
diaria, lo malo es que es diferente cada dia. aproximadamente se corre con
150 plazas diferentes.
Alguna idea.

"principiante" wrote:

Uff... con razón está tan lenta. :)

Aparte de lo compleja de la consulta en si misma te recomiendo que crees
nuevos indices basados en esos where's que usas tambien que trates de
suprimir subconsultas en el where para count(*) usando left joins quizas, en
general ver como reestructurar la consulta.


Jose TH



"Adriana R" escribió en el mensaje
news:
> eS UN PROCEDIMIENTO
> CREATE PROCEDURE ID_DM_Reporte
> @sFechaProceso char(8),--aaaammdd
> @sPlazaSuc char(6),
> @iTipoLoteID tinyint
> AS
> select s.PlazaSuc,Descripcion= 'Sobrantes (Free)',count(*) as Doc
> from vwCheqDM v inner join documentos d on v.documentoid = d.documentoid
> inner join Lotes l on l.Loteid = d.Loteid
> inner join vwsuc s on s.SucursalID = l.SucursalID
> where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso> > @sFechaProceso and l.TipoLoteID =@iTipoLoteID
> group by s.PlazaSuc
> Union all
> select @sPlazaSuc, Descripcion='Sobrantes (Free)',0 as Doc
> WHERE( select count (*) from vwCheqDM v inner join documentos d on
> v.documentoid = d.documentoid
> inner join Lotes l on l.Loteid = d.Loteid inner join vwsuc s on
> s.SucursalID = l.SucursalID
> where s.PlazaSuc = @sPlazaSuc and FechaProceso =@sFechaProceso and
> l.TipoLoteID =@iTipoLoteID and CSdm is null )=0
> Union all
> select PlazaSuc, Descripcion='Faltantes (Missing)',count(*) as Doc
> from vwCheqDMTI v
> where CS is null and PlazaSuc = @sPlazaSuc and FechaContabledm> > @sFechaProceso and
> Status = '01' and TipoLoteID =@iTipoLoteID
> group by PlazaSuc
> Union all
> select @sPlazaSuc, Descripcion='Faltantes (Missing)',0 as Doc
> WHERE( select count (*) from vwcheqdm where PlazaSuc = @sPlazaSuc and
> FechaContableDM= @sFechaProceso and
> Status = '01' and TipoLoteID =@iTipoLoteID and cs is null)=0
> UNION ALL
> select PlazaSuc, Descripcion='Reversos',count(*) as Doc
> from vwCheqDM v
> where PlazaSuc = @sPlazaSuc and FechaContabledm= @sFechaProceso and
> Status = '02' and TipoLoteID =@iTipoLoteID
> group by PlazaSuc
> Union all
> select @sPlazaSuc, Descripcion='Reversos',0 as Doc
> WHERE( select count (*) from vwcheqdm where PlazaSuc = @sPlazaSuc and
> FechaContableDM= @sFechaProceso and
> Status = '02' and TipoLoteID =@iTipoLoteID)=0
> Union all
> select s.PlazaSuc,Descripcion= 'Correctos Ok',count(*) as Doc
> from vwCheqDMTI v inner join documentos d on v.documentoid = d.documentoid
> inner join Lotes l on l.Loteid = d.Loteid and v.TipoLoteID=l.TipoLoteID
> and FechaProceso=FechaContabledm
> inner join vwsuc s on s.SucursalID = l.SucursalID
> where CSdm is not null and s.PlazaSuc = @sPlazaSuc and FechaProceso> > @sFechaProceso and l.TipoLoteID =@iTipoLoteID and status='01'
> group by s.PlazaSuc
> select s.PlazaSuc,l.Loteid, count(*) as Doc
> from vwCheqDM v inner join documentos d on v.documentoid = d.documentoid
> inner join Lotes l on l.Loteid = d.Loteid
> inner join vwsuc s on s.SucursalID = l.SucursalID
> where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso> > @sFechaProceso and l.TipoLoteID =@iTipoLoteID
> group by s.PlazaSuc, l.loteid
>
> select s.PlazaSuc,l.Loteid, CS, Transito , NoCta, Nocheque,Importe
> ,l.Monedaid
> from vwCheqDM v inner join documentos d on v.documentoid = d.documentoid
> inner join Lotes l on l.Loteid = d.Loteid
> inner join vwsuc s on s.SucursalID = l.SucursalID
> where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso> > @sFechaProceso and l.TipoLoteID =@iTipoLoteID
> order by l.loteid
> select PlazaSuc, Terminal,count(*) as doc
> from vwCheqDM v
> where CS is null and PlazaSuc = @sPlazaSuc and FechaContabledm> > @sFechaProceso and
> Status = '01' and TipoLoteID =@iTipoLoteID
> group by PlazaSuc, Terminal
> select PlazaSuc, Terminal,CS=csdm, Transito=Transitodm , NoCta=NoCtadm,
> Nocheque =Nochequedm,Importe=Importedm ,Moneda,Status
> from vwCheqDMTI v
> where CS is null and PlazaSuc = @sPlazaSuc and FechaContabledm> > @sFechaProceso and
> Status = '01' and TipoLoteID =@iTipoLoteID
> order by Terminal
> select PlazaSuc, Terminal,count(*)
> from vwCheqDM v
> where PlazaSuc = @sPlazaSuc and FechaContabledm= @sFechaProceso and
> Status = '02' and TipoLoteID =@iTipoLoteID
> group by PlazaSuc, Terminal
> select PlazaSuc, Terminal,CS=csdm, Transito=Transitodm , NoCta=NoCtadm,
> Nocheque =Nochequedm,Importe=Importedm ,Moneda,Status
> from vwCheqDM v
> where PlazaSuc = @sPlazaSuc and FechaContabledm= @sFechaProceso and
> Status = '02' and TipoLoteID =@iTipoLoteID
> order by Terminal
> select s.PlazaSuc,l.Loteid, CS, Transito , NoCta, Nocheque,Importe
> ,l.Monedaid,v.Terminal,status
> from vwCheqDMTI v inner join documentos d on v.documentoid = d.documentoid
> inner join Lotes l on l.Loteid = d.Loteid and v.TipoLoteID=l.TipoLoteID
> and
> FechaProceso=FechaContabledm
> inner join vwsuc s on s.SucursalID = l.SucursalID
> where CSdm is not null and s.PlazaSuc = @sPlazaSuc and FechaProceso> > @sFechaProceso and l.TipoLoteID =@iTipoLoteID and status='01'
> order by l.loteid
> GO
>
>
> "Marcos Mellibovsky" wrote:
>
>> Hola Adriana,
>> podes pasar la consulta?
>>
>> Saludos
>> Marcos Mellibovsky
>> MCT MCTS MCSD.NET MCDBA MCSE...
>> Córdoba Argentina
>>
>> "Adriana R" wrote in message
>> news:
>> > Hola
>> > Tengo un servidor en produción en SQL Server 2000, con el último
>> > service
>> > pack. Mi problema es que cuando ejecuto un procedimiento con un valor
>> > especifico este tarda mas de 1 minuto, mientras que con cualquier otra
>> > consulta se ejecuta en menos de 2 seg. El procedimiento hace selects a
>> > varias tablas y regresa varios record set.
>> > Ya reindexamos y se sigue presentando. No importa la hora en que se
>> > ejcute
>> > siempre tarda lo mismo. Ya revise los registros por si tenian algo raro
>> > y
>> > no
>> > encontre nada.
>> > Al otro día la consulta se normaliza pero me presenta otro valor con el
>> > problema. Tendrán alguna idea.
>> >
>> >
>>
>>
>>



Respuesta Responder a este mensaje
#5 Juan Carlos Mendoza
04/08/2007 - 20:25 | Informe spam
Adriana,

Tu Stored Procedure es complejo y deberias, primero indentarla
correctamente para una mejor comprension, segundo, aplica el dicho
"divide y venceras" , subdivide tu stored procedure en otros mas
pequeños para que la compilacion y estadistica sean mas eficientes.
Revisa este codigo que es el que has enviado, distribuido primero en
dos procedures, el complejo con el query de unions y el segundo con
los pequeños queries, luego dentro del primero invocacion a 3 stored
procedures que contienen el resultado de los count(*), pruebalo, y
comentanos como te fue.

Saludos

Juan Carlos Mendoza


CREATE PROCEDURE ID_DM_Reporte
@sFechaProceso char(8),--aaaammdd
@sPlazaSuc char(6),
@iTipoLoteID tinyint
AS

EXEC ID_DM_Reporte_Bloque1 @sFechaProceso, @sPlazaSuc, @iTipoLoteID
EXEC ID_DM_Reporte_Bloque2 @sFechaProceso, @sPlazaSuc, @iTipoLoteID
GO

******************************************************************************************
CREATE PROCEDURE ID_DM_Reporte_Bloque1
@sFechaProceso char(8),--aaaammdd
@sPlazaSuc char(6),
@iTipoLoteID tinyint
AS

DECLARE @suma1 smallint,
@suma2 smallint,
@suma3 smallint

perform ID_DM_Reporte_Bloque1_1 @suma1 output
perform ID_DM_Reporte_Bloque1_2 @suma2 output
perform ID_DM_Reporte_Bloque1_3 @suma3 output

select s.PlazaSuc,Descripcion= 'Sobrantes (Free)',count(*) as Doc
from vwCheqDM v inner join documentos d on v.documentoid d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is null and s.PlazaSuc = @sPlazaSuc and
FechaProceso= @sFechaProceso and l.TipoLoteID =@iTipoLoteID
group by s.PlazaSuc
Union all
select @sPlazaSuc, Descripcion='Sobrantes (Free)',0 as Doc
WHERE @suma1 = 0
/* Reemplazado por @suma1
WHERE ( select count (*)
from vwCheqDM v
inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where s.PlazaSuc = @sPlazaSuc and
FechaProceso =@sFechaProceso and
l.TipoLoteID =@iTipoLoteID and
CSdm is null )=0
*/
Union all
select PlazaSuc, Descripcion='Faltantes (Missing)',count(*) as Doc
from vwCheqDMTI v
where CS is null and
PlazaSuc = @sPlazaSuc and
FechaContabledm= @sFechaProceso and
Status = '01' and
TipoLoteID =@iTipoLoteID
group by PlazaSuc
Union all
select @sPlazaSuc, Descripcion='Faltantes (Missing)',0 as Doc
WHERE @suma2 = 0
/* Reemplazado por @suma2
WHERE ( select count (*) from vwcheqdm
where PlazaSuc = @sPlazaSuc and
FechaContableDM= @sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID and cs is
null)=0
*/
UNION ALL
select PlazaSuc, Descripcion='Reversos',count(*) as Doc
from vwCheqDM v
where PlazaSuc = @sPlazaSuc and
FechaContabledm= @sFechaProceso and
Status = '02' and
TipoLoteID =@iTipoLoteID
group by PlazaSuc
Union all
select @sPlazaSuc, Descripcion='Reversos',0 as Doc
WHERE @suma3 = 0
/* Reemplazado por @suma3
WHERE ( select count (*) from vwcheqdm where PlazaSuc = @sPlazaSuc
and
FechaContableDM= @sFechaProceso and
Status = '02' and TipoLoteID =@iTipoLoteID)=0
*/
Union all
select s.PlazaSuc,Descripcion= 'Correctos Ok',count(*) as Doc
from vwCheqDMTI v inner join documentos d on v.documentoid d.documentoid
inner join Lotes l on l.Loteid = d.Loteid and
v.TipoLoteID=l.TipoLoteID and
FechaProceso=FechaContabledm
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is not null and
s.PlazaSuc = @sPlazaSuc and
FechaProceso= @sFechaProceso and
l.TipoLoteID =@iTipoLoteID and status='01'
group by s.PlazaSuc
GO




******************************************************************************************

CREATE PROCEDURE ID_DM_Reporte_Bloque2
@sFechaProceso char(8),--aaaammdd
@sPlazaSuc char(6),
@iTipoLoteID tinyint
AS

****** BLOQUE 2: QUERIES SENCILLOS
select s.PlazaSuc,l.Loteid, count(*) as Doc
from vwCheqDM v inner join documentos d on v.documentoid d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso @sFechaProceso and l.TipoLoteID =@iTipoLoteID
group by s.PlazaSuc, l.loteid
select s.PlazaSuc,l.Loteid, CS, Transito , NoCta, Nocheque,
Importe,l.Monedaid
from vwCheqDM v inner join documentos d on v.documentoid d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is null and s.PlazaSuc = @sPlazaSuc and FechaProceso @sFechaProceso and l.TipoLoteID =@iTipoLoteID
order by l.loteid

select PlazaSuc, Terminal,count(*) as doc
from vwCheqDM v
where CS is null and PlazaSuc = @sPlazaSuc and
FechaContabledm @sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID
group by PlazaSuc, Terminal

select PlazaSuc, Terminal,CS=csdm, Transito=Transitodm ,
NoCta=NoCtadm,
Nocheque =Nochequedm,Importe=Importedm ,Moneda,Status
from vwCheqDMTI v
where CS is null and
PlazaSuc = @sPlazaSuc and
FechaContabledm= @sFechaProceso and
Status = '01' and TipoLoteID =@iTipoLoteID
order by Terminal
select PlazaSuc, Terminal,count(*)
from vwCheqDM v
where PlazaSuc = @sPlazaSuc and
FechaContabledm= @sFechaProceso and
Status = '02' and
TipoLoteID =@iTipoLoteID
group by PlazaSuc, Terminal

select PlazaSuc, Terminal,CS=csdm, Transito=Transitodm ,
NoCta=NoCtadm,
Nocheque =Nochequedm,Importe=Importedm ,Moneda,Status
from vwCheqDM v
where PlazaSuc = @sPlazaSuc and
FechaContabledm= @sFechaProceso and
Status = '02' and
TipoLoteID =@iTipoLoteID
order by Terminal

select s.PlazaSuc,l.Loteid, CS, Transito , NoCta, Nocheque,Importe
,l.Monedaid,v.Terminal,status
from vwCheqDMTI v
inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid and
v.TipoLoteID=l.TipoLoteID and
FechaProceso=FechaContabledm
inner join vwsuc s on s.SucursalID = l.SucursalID
where CSdm is not null and
s.PlazaSuc = @sPlazaSuc and
FechaProceso= @sFechaProceso and
l.TipoLoteID =@iTipoLoteID and
status='01'
order by l.loteid
GO


********************************************************************************

CREATE PROCEDURE ID_DM_Reporte_Bloque1
@sFechaProceso char(8),--aaaammdd
@sPlazaSuc char(6),
@iTipoLoteID tinyint,
@numsalida smallint
AS

select @numsalida = count (*)
from vwCheqDM v
inner join documentos d on v.documentoid = d.documentoid
inner join Lotes l on l.Loteid = d.Loteid
inner join vwsuc s on s.SucursalID = l.SucursalID
where s.PlazaSuc = @sPlazaSuc and
FechaProceso =@sFechaProceso and
l.TipoLoteID =@iTipoLoteID and
CSdm is null
GO

********************************************************************************

CREATE PROCEDURE ID_DM_Reporte_Bloque2
@sFechaProceso char(8),--aaaammdd
@sPlazaSuc char(6),
@iTipoLoteID tinyint,
@numsalida smallint
AS

select @numsalida = count (*)
from vwcheqdm
where PlazaSuc = @sPlazaSuc and
FechaContableDM= @sFechaProceso and
Status = '01' and
TipoLoteID =@iTipoLoteID and
cs is null
GO

********************************************************************************

CREATE PROCEDURE ID_DM_Reporte_Bloque3
@sFechaProceso char(8),--aaaammdd
@sPlazaSuc char(6),
@iTipoLoteID tinyint,
@numsalida smallint
AS

select @numsalida = count (*)
from vwcheqdm
where PlazaSuc = @sPlazaSuc and
FechaContableDM= @sFechaProceso and
Status = '02' and
TipoLoteID =@iTipoLoteID

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida