Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Problema con date_parte en subconsulta

Estas en el tema de Problema con date_parte en subconsulta en el foro de PostgreSQL en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/06/2012, 16:39
 
Fecha de Ingreso: junio-2008
Ubicación: Colombia
Mensajes: 207
Antigüedad: 16 años, 4 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.

Etiquetas: select, subconsulta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:19.