Hola a todos tengo un problemilla que me ha dado dolor de cabeza toda la mañana tratando de implementarlo espero me puedan dar alguna recomendacion
Tengo la siguiente consulta:
Código:
SELECT
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
El error que me sale es el siguiente
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 como
Cita: Proyecto | Num ordenes | Num Pagos
Project 1 | 5 | 10
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.
A simple vista parece sencillo pero no se que me estoy perdiendo.
Cualquier recomendación sera bienvenida.
Saludos