Cita:
Iniciado por gnzsoloyo OK, ¿y qué pasa si sólo pones así:
Código SQL:
Ver originalSELECT xnsd.num_guia,xnsd.cdg_prod,xns.fec_guia,xnsd.pre_guia
FROM m_guia xns
INNER JOIN d_guia xnsd ON (xnsd.num_guia=xns.num_guia AND xnsd.cdg_tpg=xns.cdg_tpg)
INNER JOIN t_cambio xtcmb ON (xtcmb.fec_cmb=xns.fec_guia)
WHERE xns.cdg_tpg='002'
AND cdg_prod='0100400078'
ORDER BY xnsd.num_guia DESC,xns.fec_guia DESC
¿Devuelve algo?
Hola, gracias por el interés en el tema.
Sí, si quito el LIMIT me devuelve varios registros en orden descendente.
Creo estar acercándome al problema, lo que pasa es que la subconsulta funciona
cuando uso dentro de ella la condición cdg_prod='0100400078',
pero cuando la quito y aplico la condicional al query principal
esta no me muestra ningún registro.
Y eso lo hace aún más raro XD.
Este es el query final (reducido porque tengo varias tablas involucradas).
Código SQL:
Ver originalSELECT nsd.num_guia,nsd.cdg_prod
FROM d_guia nsd
INNER JOIN
(SELECT xnsd.num_guia,xnsd.cdg_prod,xns.fec_guia,xnsd.pre_guia,xtcmb.tip_cmb,
ROUND((CASE xns.cdg_mon WHEN '001' THEN xnsd.pre_guia ELSE
(CASE '001' WHEN '002' THEN xnsd.pre_guia/xtcmb.tip_cmb ELSE xnsd.pre_guia*xtcmb.tip_cmb END)END)::NUMERIC,4)AS costo_prom
FROM m_guia xns
INNER JOIN d_guia xnsd ON (xnsd.num_guia=xns.num_guia AND xnsd.cdg_tpg=xns.cdg_tpg)
INNER JOIN t_cambio xtcmb ON (xtcmb.fec_cmb=xns.fec_guia)
WHERE xns.cdg_tpg='002'
--AND cdg_prod='0100400052'
ORDER BY xnsd.num_guia DESC,xns.fec_guia DESC
LIMIT 1 OFFSET 0)xnsd ON xnsd.cdg_prod=nsd.cdg_prod
WHERE nsd.cdg_prod='0100400052'
LIMIT 100 OFFSET 0
Si habilito la condicional de la subconsulta recién ahí me muestra los resultados, pero esa no es la idea ya que el query principal tiene distintos productos (consulta dinámica) y no puedo manejar los productos de forma estática.
Intenté usar
nsd.cdg_prod='0100400052' dentro de la subconsulta, pero no funciona porque no se puede usar variables de una consulta superior a una inferior, ¿cierto?. Creo que no me queda más que crear un procedimiento almacenado o una vista. ¿Cuál sería mejor?