PLEASE HELP
I've spent weeks trying to solve this drill through issue.
I'm trying to Drill through a dataview using the following entities:
- Month
- Reporting Cost centre
- Account
Originally i could get the drill through to produce results for reporting cost centre and Account correctly but not filtered correctly on the right month. It would seem the way the month entity is brought into the cube is quite convoluted.
This is what i get from the error log:
ERROR [HY000] [Oracle][ODBC][Ora]ORA-00920: invalid relational operator? |
---|
SELECT * FROM ( select ?CASE WHEN TO_NUMBER(CODA.OAS_DOCHEAD.PERIOD) < 10 THEN TO_CHAR(TO_NUMBER(CODA.OAS_DOCHEAD.YR)) ELSE TO_CHAR(TO_NUMBER(CODA.OAS_DOCHEAD.YR) + 1) END || LPAD(TO_CHAR(MOD(TO_NUMBER(CODA.OAS_DOCHEAD.PERIOD) + 2, 12) + 1), 2, '0') AS MONTH, ?? CODA."OAS_DOCLINE".el2 AS "Reporting Cost Centre", ?? CODA."OAS_DOCLINE".el3 AS Account, ?? CODA."OAS_DOCHEAD".yr,?? CODA."OAS_DOCHEAD".period,?? ltrim(CODA."OAS_DOCHEAD".docnum),?? CODA."OAS_DOCHEAD".docdate,?? CODA."OAS_DOCHEAD".doccode,?? CODA."OAS_DOCHEAD".origuser,?? CODA."OAS_DOCLINE".descr,?? CODA."OAS_DOCLINE".valuehome,?? CODA."OAS_DOCLINE".ref2,?? CODA."OAS_DOCLINE".ref3,?? CODA."OAS_DOCLINE".ref4,?? CODA."OAS_DOCLINE".ref5,?? CODA."OAS_DOCLINE".ref6??FROM?? CODA."OAS_COMPANY" INNER JOIN CODA."OAS_DOCHEAD" ON (CODA."OAS_COMPANY".code=CODA."OAS_DOCHEAD".cmpcode)?? INNER JOIN CODA."OAS_DOCLINE" ON (CODA."OAS_DOCHEAD".cmpcode=CODA."OAS_DOCLINE".cmpcode and CODA."OAS_DOCHEAD".doccode=CODA."OAS_DOCLINE".doccode and CODA."OAS_DOCHEAD".docnum=CODA."OAS_DOCLINE".docnum)?? WHERE CASE WHEN TO_NUMBER(CODA.OAS_DOCHEAD.PERIOD) < 10 THEN TO_CHAR(TO_NUMBER(CODA.OAS_DOCHEAD.YR)) ELSE TO_CHAR(TO_NUMBER(CODA.OAS_DOCHEAD.YR) + 1) END || LPAD(TO_CHAR(MOD(TO_NUMBER(CODA.OAS_DOCHEAD.PERIOD) + 2, 12) + 1), 2, '0') IN (?, ?) AND CODA.OAS_DOCLINE.EL2, = ??? AND CODA.OAS_DOCLINE.EL3, = ??? ) WHERE ROWNUM <= 10000 |
If i run the same query in SQL developer it works as expected and the only difference is part of the where clause where instead of the convoluted way of looking for "Month" i'm searching on Year and Period.
SELECT
CASE WHEN TO_NUMBER(CODA.OAS_DOCHEAD.PERIOD) < 10 THEN TO_CHAR(TO_NUMBER(CODA.OAS_DOCHEAD.YR)) ELSE TO_CHAR(TO_NUMBER(CODA.OAS_DOCHEAD.YR) + 1) END || LPAD(TO_CHAR(MOD(TO_NUMBER(CODA.OAS_DOCHEAD.PERIOD) + 2, 12) + 1), 2, '0') AS MONTH,
CODA."OAS_DOCLINE".el2 AS "REPORTING COST CENTRE",--dbo_oas_element2.name,
CODA."OAS_DOCLINE".el3 AS Account,
--dbo_oas_element3.name,
CODA."OAS_DOCHEAD".yr,
CODA."OAS_DOCHEAD".period,
ltrim(CODA."OAS_DOCHEAD".docnum),
CODA."OAS_DOCHEAD".docdate,
CODA."OAS_DOCHEAD".doccode,
CODA."OAS_DOCHEAD".origuser,
CODA."OAS_DOCLINE".descr,
CODA."OAS_DOCLINE".valuehome,
CODA."OAS_DOCLINE".ref2,
CODA."OAS_DOCLINE".ref3,
CODA."OAS_DOCLINE".ref4,
CODA."OAS_DOCLINE".ref5,
CODA."OAS_DOCLINE".ref6
FROM
CODA."OAS_COMPANY" INNER JOIN CODA."OAS_DOCHEAD" ON (CODA."OAS_COMPANY".code=CODA."OAS_DOCHEAD".cmpcode)
INNER JOIN CODA."OAS_DOCLINE" ON (CODA."OAS_DOCHEAD".cmpcode=CODA."OAS_DOCLINE".cmpcode and CODA."OAS_DOCHEAD".doccode=CODA."OAS_DOCLINE".doccode and CODA."OAS_DOCHEAD".docnum=CODA."OAS_DOCLINE".docnum)
--LEFT OUTER JOIN CODA."OAS_ELEMENT" dbo_oas_element2 ON (CODA."OAS_DOCLINE".cmpcode=dbo_oas_element2.cmpcode and CODA."OAS_DOCLINE".el2=dbo_oas_element2.code AND dbo_oas_element2.elmlevel=2)
--LEFT OUTER JOIN CODA."OAS_ELEMENT" dbo_oas_element3 ON (CODA."OAS_DOCLINE".cmpcode=dbo_oas_element3.cmpcode and CODA."OAS_DOCLINE".el3=dbo_oas_element3.code AND dbo_oas_element3.elmlevel=3)
WHERE
(
CODA."OAS_DOCHEAD".yr = '2024'
AND
CODA."OAS_DOCHEAD".period = '12'
AND
CODA."OAS_DOCLINE".el2 = 'R3569'
AND
CODA."OAS_DOCLINE".el3 = '6211020'
)