03/01/2007, 11:57
|
| Colaborador | | Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años Puntos: 38 | |
Re: Ayuda Chikos Con un Stored Segun yo, seria algo como esto.
Si existen indices para los campos de los joins, esto deberia correr muy rapido.
Secuencias: NumFabrica, IdFolioOrigen, IDLGS
ABFoliosPedidos : IdFolio
ABAsignaciones : IdLGS
Código:
Declare @NumerosFabDupDifAsig table(
Grupo1 smallint
,Secuencia1 smallint
,NumeroFabrica1 char(25)
,Origen1 char(3)
,Grupo2 smallint
,Secuencia2 smallint
,NumeroFabrica2 char(25)
,Origen2 char(3)
,Cuenta1 int
,Cuenta2 int)
Insert into @NumerosFabDupDifAsig
Select a.IdLGS IdLGS1
,a.IdGrupo IdGrupo1
,a.IdSecuencia IdSecuencia1
,a.NumFabrica NumFabrica1
,isnull(F1.IdCve, '0') Origen1
,b.IdLGS IdLGS2
,b.IdGrupo IdGrupo2
,b.IdSecuencia IdSecuencia2
,b.NumFabrica NumFabrica2
,isnull(F2.IdCve,'0') Origen2
,isnull(count(G1.IdAsigna),0) Cuenta1
,isnull(count(G2.IdAsigna),0) Cuenta2
From Secuencias a (nolock)
Inner join
Secuencias b (nolock)
On a.NumFabrica = b.NumFabrica And
a.IdFolioOrigen = b.IdFolioOrigen And
a.IdLGS <> b.IdLGS
Left outer join
ABFoliosPedidos F1 (nolock)
On a.IdFolioOrigen = F1.IdFolio
Left outer join
ABFoliosPedidos F2 (nolock)
On b.IdFolioOrigen = F2.IdFolio
Left outer join
ABAsignaciones G1 (nolock)
On a.IdLGS = G1.IdLGS
Left outer join
ABAsignaciones G2 (nolock)
On b.IdLGS = G2.IdLGS
Order by
a.NumFabrica,
b.NumFabrica
--------------------------------------------------------------------------------------
-- Aqui tengo duda: Segun yo, se debe seleccionar solo aquellos
-- registros donde no exista correspondencia entre entre la pareja Grupo y Secuencia
-- de ambas tablas.
-- Es decir, si un grupo y secuencia de A1 se encuentra tambien en A2 ya no se muestra
-- y viceversa.
--------------------------------------------------------------------------------------
Select N1.*
From @NumerosFabDupDifAsig N1
Left outer join
@NumerosFabDupDifAsig N2
On N1.Grupo1 = N2.Grupo2 And
N1.Secuencia1 = N2.Secuencia2
Left outer join
@NumerosFabDupDifAsig N3
On N1.Grupo2 = N3.Grupo1 And
N1.Secuencia2 = N3.Secuencia1
Where N2.Grupo2 is null And
N3.Grupo1 is null And
N1.Cuenta1 <> N1.Cuenta2
Un saludo y Feliz año nuevo a todos!
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. |