wrongly blocked query by "Invalid expression in the select list (not contained 
in either an aggregate function or the GROUP BY clause)" for some date operation
---------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: CORE-3480
                 URL: http://tracker.firebirdsql.org/browse/CORE-3480
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 2.1.4
            Reporter: Karol Bieniaszewski


table definition

CREATE TABLE DOC_MAG 
(ID INTEGER NOT NULL PRIMARY KEY,
DATA_DOC DATE NOT NULL,
WART_NETT NUMERIC(16, 2)
)

---------------------------------------------------------
simplified query to show problem

SELECT
EXTRACT(YEAR FROM DM.DATA_DOC) AS Y, EXTRACT(MONTH FROM DM.DATA_DOC) AS
M ,
(SELECT SUM(DMP.WART_NETT)
FROM
DOC_MAG DMP
WHERE
 (DMP.DATA_DOC>=
CAST(EXTRACT(YEAR FROM DM.DATA_DOC) || '-' || EXTRACT(MONTH FROM
DM.DATA_DOC) || '-01' AS DATE)
AND
/* here is the problem */
DMP.DATA_DOC<CAST(EXTRACT(YEAR FROM DATEADD(1 MONTH TO DM.DATA_DOC))
|| '-' || EXTRACT(MONTH FROM DATEADD(1 MONTH TO DM.DATA_DOC) ) || '-01' AS DATE)
)
/* end of problem */
) AS S
FROM
DOC_MAG DM
GROUP BY EXTRACT(YEAR FROM DM.DATA_DOC), EXTRACT(MONTH FROM
DM.DATA_DOC)
ORDER BY  1 DESC, 2 DESC

-----------------------------------------
when i run this query i got 
SQL Message : -104
Invalid token

Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate 
function or the GROUP BY clause)


-------------------------------------------------------------------------------------------

if i remove group by clause query run ok

also if i change query to this: only i change date cast from explicit string 
'2011-01-01'

SELECT
EXTRACT(YEAR FROM DM.DATA_DOC) AS Y, EXTRACT(MONTH FROM DM.DATA_DOC) AS
M ,
(SELECT SUM(DMP.WART_NETT)
FROM
DOC_MAG DMP
WHERE
 (DMP.DATA_DOC>=
CAST(EXTRACT(YEAR FROM DM.DATA_DOC) || '-' || EXTRACT(MONTH FROM
DM.DATA_DOC) || '-01' AS DATE)
AND
/* here is the problem */
DMP.DATA_DOC<CAST('2011-01-01' AS DATE)
)
/* end of problem */
) AS S
FROM
DOC_MAG DM
GROUP BY EXTRACT(YEAR FROM DM.DATA_DOC), EXTRACT(MONTH FROM
DM.DATA_DOC)
ORDER BY  1 DESC, 2 DESC

i suppose that this is related to DateAdd function in this query 
becouse first check "DMP.DATA_DOC>=" work ok only second "DMP.DATA_DOC<" not 
work

i test this also on FB.2.1.4.18408 


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to