The following query:
 

 SELECT PB_LOAD_TYPE,
        /* If already picked up use the pick up date.
           If already delivered us the delivered date.
           If appointment date present, use it.
           Otherwise, use today's date */
        IIF(OPS_ONBOARD_TIME IS NOT NULL,
            CAST(OPS_ONBOARD_TIME AS DATE),
            IIF(OPS_DELIVERED_TIME IS NOT NULL,
                CAST(OPS_DELIVERED_TIME AS DATE),
                COALESCE(CAST(OPS_APPT_LOW AS DATE), CAST('TODAY' AS DATE)))) 
AS APPT_DATE,
        /* Get the region ID */
        COALESCE((SELECT FIRST 1 CTRR_REGION_ID
                    FROM CT_REGION_RANGES
                    WHERE CTRR_LOW_ZIP <= OPS_ZIP AND
                          CTRR_HIGH_ZIP >= OPS_ZIP
                    ORDER BY CTRR_REGION_ID), 'N/A') AS REGION_ID,
        /* Count pick ups */
        SUM(IIF(OPS_TYPE = 'P', 1, 0)) AS PICKUPS,
        /* Count deliveries */
        SUM(IIF(OPS_TYPE = 'P', 0, 1)) AS DELIVERIES
   FROM OPS_STOP_REC
     LEFT JOIN OPS_HEADER ON PB_ID = OPS_ORDER_ID
   WHERE PB_TYPE = 'O' AND
         PB_DT_ENT >= :PB_DT_ENT
   GROUP BY APPT_DATE, PB_LOAD_TYPE, REGION_ID
 
   ORDER BY APPT_DATE, PB_LOAD_TYPE, REGION_ID
 

 throws this error:
 

 Invalid expression in the select list (not contained in either an aggregate 
function or the GROUP BY clause)

 

 There is nothing wrong with the query that I can see. What am I missing?
 

 If I remove the two SUM() lines and the GROUP BY it works perfectly.
 

 I am using Firebird 2.5 32-bit on Windows 7 64-bit.
 

  • ... sboyd...@gmail.com [firebird-support]
    • ... Dmitry Yemanov dim...@users.sourceforge.net [firebird-support]
      • ... sboyd...@gmail.com [firebird-support]
        • ... Svein Erling Tysvær svein.erling.tysv...@kreftregisteret.no [firebird-support]
          • ... sboyd...@gmail.com [firebird-support]
            • ... Helen Borrie hele...@iinet.net.au [firebird-support]
              • ... sboyd...@gmail.com [firebird-support]

Reply via email to