
05/06/2012, 16:39
|
| | Fecha de Ingreso: junio-2008 Ubicación: Colombia
Mensajes: 207
Antigüedad: 16 años, 9 meses Puntos: 12 | |
Problema con date_parte en subconsulta Se supone segun he leido que una subconsulta en el SELECT puede usar los campos de una consulta externa, pero en la siguiente consulta no puedo hacerlo, me arroja el siguiente error ERROR: la subconsulta usa la columna «o.created» no agrupada de una consulta exterior
LINE 1: ...ate_part('month',ord.created) = date_part('month',o.created)...
Necesito que la consulta externa vaya usando lo que me retornan desde afuera las columnas date_part('year',o.created) ,
date_part('month',o.created) , las cuales segun la fecha me van retornando el numero del mes 1..2 etc, si alguien pudiera indicarme donde se encuentra el error le agradeceria.
Código:
SELECT
max(pj.c_project_id),
pj.name,
date_part('year',o.created) AS anio,
date_part('month',o.created) AS mes,
(
SELECT
COUNT(ol.c_orderline_id)
FROM c_orderline ol
INNER JOIN c_order ord ON (ord.c_order_id = ol.c_order_id)
INNER JOIN c_project prj ON (ord.c_project_id = prj.c_project_id)
INNER JOIN m_product pr ON (pr.m_product_id = ol.m_product_id)
INNER JOIN m_product_category pc ON (pr.m_product_category_id = pc.m_product_category_id)
WHERE ord.issotrx = 'Y'
AND ord.docstatus = 'CO'
AND ord.isactive = 'Y'
AND ord.c_project_id = 1000035
AND pc.m_product_category_id = 1000304
AND date_part('month',ord.created) = date_part('month',o.created)
AND date_part('year',ord.created) = date_part('year',o.created)
) AS num_aptos
FROM c_project pj
INNER JOIN c_order o ON (o.c_project_id = pj.c_project_id)
WHERE o.created BETWEEN '2012-01-01' AND '2012-02-09'
AND pj.c_project_id = 1000035
GROUP BY
date_part('year',o.created),
date_part('month',o.created),
pj.c_project_id,
pj.name
ORDER BY date_part('year',o.created),
date_part('month',o.created)
Saludos. |