Tengo la siguiente consulta:
Código:
El error que me sale es el siguienteSELECT pro.name, ord.c_project_id, SUM( ord.grandtotal ) AS valor_ventas, COUNT ( ord.c_order_id ) AS total_ordenes, /* ***** VALOR RECIBIDO ****** */ (SELECT ROUND(SUM(pay.payamt),2) FROM c_payment pay WHERE pay.datetrx BETWEEN '2008-01-01' AND '2010-06-30' AND pay.c_order_id = ord.c_order_id GROUP BY pay.c_order_id ) AS valor_recibido /* ************* */ FROM c_order ord LEFT JOIN c_project pro ON ( ord.c_project_id = pro.c_project_id ) LEFT JOIN c_projecttype prot ON (pro.c_projecttype_id = prot.c_projecttype_id) WHERE ord.created BETWEEN '2010-06-01' AND '2010-06-30' --AND ord.c_project_id = 1000068 AND ord.issotrx = 'Y' -- ordenes de venta (N: compra) AND ord.isactive = 'Y' -- ordenes activas AND ord.docstatus IN ('CO') -- ordenes completas AND prot.c_projecttype_id IN (1000000, 1000002, 1000003, 1000005, 1000006, 1000007) -- SELECT * FROM c_projecttype GROUP BY ord.c_project_id, pro.name ORDER BY ord.c_project_id
Cita:
ERROR: la subconsulta usa la columna «ord.c_order_id» no agrupada de una consulta exterior
LINE 44: AND pay.c_order_id = ord.c_order_id
^
********** Error **********
ERROR: la subconsulta usa la columna «ord.c_order_id» no agrupada de una consulta exterior
SQL state: 42803
Character: 1908
Resulta que la tabla c_project tiene N ordenes de compra y a su vez las ordenes de compra ( c_order ) tienen N pagos (c_payment) necesito mostrar en la consulta algo comoERROR: la subconsulta usa la columna «ord.c_order_id» no agrupada de una consulta exterior
LINE 44: AND pay.c_order_id = ord.c_order_id
^
********** Error **********
ERROR: la subconsulta usa la columna «ord.c_order_id» no agrupada de una consulta exterior
SQL state: 42803
Character: 1908
Cita:
De alguna forma entiendo el porque del error, pero estoy atascado en saber como contar los pagos de cada orden de compra para cada proyecto, y no, no puedo agrupar por orden de compra ya que debe estar pro proyecto.Proyecto | Num ordenes | Num Pagos
Project 1 | 5 | 10
Project 1 | 5 | 10
A simple vista parece sencillo pero no se que me estoy perdiendo.
Cualquier recomendación sera bienvenida.
Saludos