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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Maxi
28/04/2007 - 04:39 | Informe spam
Hola, busca queryus recursivos en tus libros online, si usas SQl2005 podes
usar CTE para ello


"jcac" escribió en el mensaje de noticias
news:
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.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida