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

Preguntas similare

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

Respuesta Responder a este mensaje
#2 Gustavo Larriera (MVP)
08/12/2006 - 20:58 | Informe spam
Mauricio Pulla wrote:
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








No nos brindas toda la información necesaria para ayudarte. Sería de
ayuda que nos proporciones el CREATE TABLE de las tablas involucradas,
un conjunto de datos de prueba y que nos digas cuál es el resultado
esperado para esos datos de prueba.

Gustavo Larriera, MVP
Solid Quality
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Blog: http://solidqualitylearning.com/blogs/glarriera/
Este mensaje se proporciona tal como es, sin garantías de ninguna clase
/ This message is provided "AS IS" with no warranties expressed or
implied, and confers no rights.
Respuesta Responder a este mensaje
#3 Mauricio Pulla
09/12/2006 - 01:17 | Informe spam
Hola Gustavo.

Gracias por tu interes.

Programo con Vfp 8.0 Ado y Sql Server 2000, en las news de VFP hacemos
preguntas en donde evitamos mensajes largos tratamos de ser lo mas
consitente posible, asi no consamos a la gente que nos hecha una mano.

Sería de ayuda que nos proporciones el CREATE TABLE de las tablas
involucradas, un conjunto de datos de prueba y que nos digas cuál es el
resultado esperado para esos datos de prueba.


A diferencia de estas news donde se necesita mas información, claro
dependiendo de la pregunta, la proxima vez pondre a dispocicion los datos
necesarios para que me puedan ayudar.

Entre tanto ya lo arregle.
Este es el Sql que necesitava.

Select A.iIdProceso, A.iIdMaqPro, A.iIdOPC, A.iOrden,
isnull(
(
Select Sum(D.iTime)
From OPProceso D Inner Join OPC C On D.iIdOPC = C.iOPCId And
C.cEstado = 'P'
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

Saludos.
Mauricio Pulla.
Cuenca-Ecuador


"Gustavo Larriera (MVP)" escribió en el mensaje
news:
Mauricio Pulla wrote:
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








No nos brindas toda la información necesaria para ayudarte. Sería de ayuda
que nos proporciones el CREATE TABLE de las tablas involucradas, un
conjunto de datos de prueba y que nos digas cuál es el resultado esperado
para esos datos de prueba.

Gustavo Larriera, MVP
Solid Quality
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Blog: http://solidqualitylearning.com/blogs/glarriera/
Este mensaje se proporciona tal como es, sin garantías de ninguna clase /
This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida