Help me Sql...

08/12/2006 - 00:08 por Mauricio Pulla | Informe spam
Hola.

Necesito ayuda para sacar adelante este Sql.

Tengo el siguiente Sql que me retorna la suma de los tiempos de los
distintos procesos antes de una determinada OP. regidos por la columna
OPProceso.iOrden

Select A.iIdProceso, A.iIdMaqPro, Sum(A.iTime) As iTime, D.iOrden
From OPProceso A Inner Join
(Select OPProceso.iIdProceso, OPProceso.iIdMaqPro, OPProceso.iOrden
From OPProceso
Where OPProceso.iIdOPC = 107
And OPProceso.iEstado < 2
) As B
ON A.iIdProceso = B.iIdProceso And A.iIdMaqPro = B.iIdMaqPro
Inner Join OPC C On A.iIdOPC = C.iOPCId And C.cEstado = 'P'
Inner Join Proceso D On A.iIdProceso = D.iProcesoId
Where A.iOrden < B.iOrden
And A.iEstado < 2
Group By A.iIdProceso, A.iIdMaqPro, D.iOrden
Order By D.iOrden

Ahora necesito obtener la suma de los tiempos de todos los procesos de las
distintas OPs que tengan en OPC.cEstado = 'P'
Se me ocurrio:

Select A.iIdProceso, A.iIdMaqPro, Sum(A.iTime) As iTime, D.iOrden, A.iIdOPC
From OPProceso A Inner Join
(Select OPProceso.iIdProceso, OPProceso.iIdMaqPro, OPProceso.iOrden,
OPProceso.iIdOPC
From OPProceso
Where OPProceso.iEstado < 2
) As B
ON A.iIdProceso = B.iIdProceso And A.iIdMaqPro = B.iIdMaqPro And
A.iIdOPC = B.iIdOPC
Inner Join OPC C On A.iIdOPC = C.iOPCId And C.cEstado = 'P'
Inner Join Proceso D On A.iIdProceso = D.iProcesoId
Where A.iOrden < B.iOrden
And A.iEstado < 2
Group By A.iIdProceso, A.iIdMaqPro, D.iOrden, A.iIdOPC
Order By D.iOrden

El problema esta en esta linea
Where A.iOrden < B.iOrden , no se com indicarle que tome el orden que le
corresponde segun la iIdProceso, .iIdMaqPro y iIdOPC

Encuanto a indices todo correcto, todos los campos que comienzan con I son
enteros que admiten valores >= 0


Trabajo con Sql Server 2000. SP3

Saludos.
Mauricio Pulla.
Cuenca-Ecuador
 

Leer las respuestas

#1 Mauricio Pulla
08/12/2006 - 20:15 | Informe spam
Hola.

El siguiente Sql, me retorna un conjunto de datos pero solo los 2 primeros
registros estan correctos.

Select A.iIdProceso, A.iIdMaqPro, A.iIdOPC, A.iOrden,
isnull(
(
Select Sum(D.iTime)
From OPProceso D
Where D.iIdProceso = A.iIdProceso
And D.iIdMaqPro = A.iIdMaqPro
And D.iOrden < A.iOrden
And D.iEstado < 2
Group By D.iIdProceso, D.iIdMaqPro
)
, 0) As iTime
From OPProceso A Inner Join
OPC B On A.iIdOPC = B.iOPCId And B.cEstado = 'P'
Where A.iEstado < 2
Order By A.iIdProceso, A.iIdMaqPro, A.iOrden

No entiendo que esta mal.

Saludos.
Mauricio Pulla.
Cuenca-Ecuador



"Mauricio Pulla" escribió en el mensaje
news:
Hola.

Necesito ayuda para sacar adelante este Sql.

Tengo el siguiente Sql que me retorna la suma de los tiempos de los
distintos procesos antes de una determinada OP. regidos por la columna
OPProceso.iOrden

Select A.iIdProceso, A.iIdMaqPro, Sum(A.iTime) As iTime, D.iOrden
From OPProceso A Inner Join
(Select OPProceso.iIdProceso, OPProceso.iIdMaqPro, OPProceso.iOrden
From OPProceso
Where OPProceso.iIdOPC = 107
And OPProceso.iEstado < 2
) As B
ON A.iIdProceso = B.iIdProceso And A.iIdMaqPro = B.iIdMaqPro
Inner Join OPC C On A.iIdOPC = C.iOPCId And C.cEstado = 'P'
Inner Join Proceso D On A.iIdProceso = D.iProcesoId
Where A.iOrden < B.iOrden
And A.iEstado < 2
Group By A.iIdProceso, A.iIdMaqPro, D.iOrden
Order By D.iOrden

Ahora necesito obtener la suma de los tiempos de todos los procesos de las
distintas OPs que tengan en OPC.cEstado = 'P'
Se me ocurrio:

Select A.iIdProceso, A.iIdMaqPro, Sum(A.iTime) As iTime, D.iOrden,
A.iIdOPC
From OPProceso A Inner Join
(Select OPProceso.iIdProceso, OPProceso.iIdMaqPro, OPProceso.iOrden,
OPProceso.iIdOPC
From OPProceso
Where OPProceso.iEstado < 2
) As B
ON A.iIdProceso = B.iIdProceso And A.iIdMaqPro = B.iIdMaqPro And
A.iIdOPC = B.iIdOPC
Inner Join OPC C On A.iIdOPC = C.iOPCId And C.cEstado = 'P'
Inner Join Proceso D On A.iIdProceso = D.iProcesoId
Where A.iOrden < B.iOrden
And A.iEstado < 2
Group By A.iIdProceso, A.iIdMaqPro, D.iOrden, A.iIdOPC
Order By D.iOrden

El problema esta en esta linea
Where A.iOrden < B.iOrden , no se com indicarle que tome el orden que le
corresponde segun la iIdProceso, .iIdMaqPro y iIdOPC

Encuanto a indices todo correcto, todos los campos que comienzan con I son
enteros que admiten valores >= 0


Trabajo con Sql Server 2000. SP3

Saludos.
Mauricio Pulla.
Cuenca-Ecuador

Preguntas similares