Ayuda con conteo de veces u ordenamiento

27/04/2007 - 16:03 por jcac | Informe spam
Hola lista,

Tengo la siguiente instruccion

select distinct d.prod_codprod, v.vale_produccion from vales v inner join
detvalesalm d
on v.sucr_codigo = d.sucr_codigo and v.alma_codigo = d.alma_codigo
and v.tipo_codvale = d.tipo_codvale and v.vale_numvale = d.vale_numvale
where v.vale_estado = 'C' and v.alma_codigo = '002'
and v.vale_fecemi between '20070301' and '20070331' and v.tipo_codvale
in ('006', '005')
and d.prod_codprod in (
select d.prod_codprod from vales v inner join detvalesalm d
on v.sucr_codigo = d.sucr_codigo and v.alma_codigo = d.alma_codigo
and v.tipo_codvale = d.tipo_codvale and v.vale_numvale = d.vale_numvale
where v.vale_estado = 'C' and v.alma_codigo = '002'
and v.vale_fecemi between '20070301' and '20070331' and v.tipo_codvale =
'011'
)
order by v.vale_produccion

de la cual obtengo los siguiente:

prod_codprod vale_produccion

2310030018 002-167/07
2310030019 002-167/07
2310030020 002-167/07
2310030021 002-167/07
2310030015 002-167/07
2310030016 002-167/07
2310030017 002-167/07
2310160002 002-214/07
2310230001 002-214/07
2310180002 002-214/07
2310030022 002-232/07
2310160005 002-237/07
...

mas o menos les explico lo que se hace aqui y que es lo que se desea.

en la instruccion de dentro se obtienen todos los productos que han sido
producidos dentro de un rango de tiempo, por eso es que indica en
"tipo_codvale = '011' ahora en la intruccion superior se tiene todo lo que
ha sido solicitado para hacer la produccion de otro producto es por ello que
allí indica "tipo_codvale in ('006', '005').

Ahora si bien con esto obtengo la relacion de productos que son producidos y
que a su vez dentro del mismo mes son utilizados en la elaboracion de otro
producto, como puedo obtener un indicador que me muestre si el producto A es
utilizado en la elaboracion del producto B y este a sus ves en la del
producto C, como puedo obtener eso.

Espero haberme explicado bien.

Gracias por su tiempo.
 

Leer las respuestas

#1 edwindelgadoc
27/04/2007 - 22:31 | Informe spam
Has probado haciendo un bucle mas adentro, es decir un select dentro
de tu select where...algo asi (suponiendo q el producto C es el codigo
012):

Select distinct d.prod_codprod, v.vale_produccion
From vales v inner join detvalesalm d


on v.sucr_codigo = d.sucr_codigo and v.alma_codigo d.alma_codigo
and v.tipo_codvale = d.tipo_codvale and v.vale_numvale d.vale_numvale
Where v.vale_estado = 'C' and v.alma_codigo = '002'
and v.vale_fecemi between '20070301' and '20070331' and
v.tipo_codvale in ('006', '005')
and d.prod_codprod in (
select d.prod_codprod from vales v inner join detvalesalm d
on v.sucr_codigo = d.sucr_codigo and v.alma_codigo d.alma_codigo
and v.tipo_codvale = d.tipo_codvale and v.vale_numvale d.vale_numvale
where v.vale_estado = 'C' and v.alma_codigo = '002'
and v.vale_fecemi between '20070301' and '20070331' and
v.tipo_codvale = '011'
and d.prod_codprod in (
select d.prod_codprod from vales v inner join detvalesalm d
on v.sucr_codigo = d.sucr_codigo and v.alma_codigo d.alma_codigo
and v.tipo_codvale = d.tipo_codvale and v.vale_numvale d.vale_numvale
where v.vale_estado = 'C' and v.alma_codigo = '002'
and v.vale_fecemi between '20070301' and '20070331' and
v.tipo_codvale = '012' ) )
Order by v.vale_produccion



On 27 abr, 09:03, "jcac" wrote:
Hola lista,

Tengo la siguiente instruccion

select distinct d.prod_codprod, v.vale_produccion from vales v inner join
detvalesalm d
on v.sucr_codigo = d.sucr_codigo and v.alma_codigo = d.alma_codigo
and v.tipo_codvale = d.tipo_codvale and v.vale_numvale = d.vale_numvale
where v.vale_estado = 'C' and v.alma_codigo = '002'
and v.vale_fecemi between '20070301' and '20070331' and v.tipo_codvale
in ('006', '005')
and d.prod_codprod in (
select d.prod_codprod from vales v inner join detvalesalm d
on v.sucr_codigo = d.sucr_codigo and v.alma_codigo = d.alma_codigo
and v.tipo_codvale = d.tipo_codvale and v.vale_numvale = d.vale_numvale
where v.vale_estado = 'C' and v.alma_codigo = '002'
and v.vale_fecemi between '20070301' and '20070331' and v.tipo_codvale > '011'
)
order by v.vale_produccion

de la cual obtengo los siguiente:

prod_codprod vale_produccion

2310030018 002-167/07
2310030019 002-167/07
2310030020 002-167/07
2310030021 002-167/07
2310030015 002-167/07
2310030016 002-167/07
2310030017 002-167/07
2310160002 002-214/07
2310230001 002-214/07
2310180002 002-214/07
2310030022 002-232/07
2310160005 002-237/07
...

mas o menos les explico lo que se hace aqui y que es lo que se desea.

en la instruccion de dentro se obtienen todos los productos que han sido
producidos dentro de un rango de tiempo, por eso es que indica en
"tipo_codvale = '011' ahora en la intruccion superior se tiene todo lo que
ha sido solicitado para hacer la produccion de otro producto es por ello que
allí indica "tipo_codvale in ('006', '005').

Ahora si bien con esto obtengo la relacion de productos que son producidos y
que a su vez dentro del mismo mes son utilizados en la elaboracion de otro
producto, como puedo obtener un indicador que me muestre si el producto A es
utilizado en la elaboracion del producto B y este a sus ves en la del
producto C, como puedo obtener eso.

Espero haberme explicado bien.

Gracias por su tiempo.

Preguntas similares