Hello,
To begin, I am not a SQL author and have very limited knowledge of writing queries, I’m also brand new to using the InfoMaker product.
The code below was written by my resident ‘smart guy’ and I need to create a report in InfoMaker. Please bear with me and my rookie status.
Using a composite report I have two queries and I would like to apply only one prompt for the user. The problem is that the code for one of
the reports is complex, so I’ve had to hardcode the Aircraft Tail number (201) into it to pull my data otherwise, I get the following error:
“Cannot apply criteria to a select statement with a union or nested select or nested report”
Question: How can I set a parameter for this code so that I can avoid hard coding the tail number?
Thanks!!
Here is the code;
WITH
DIMAC AS
(
SELECT MANUFACTURE, AC_TYPE, REGEXP_SUBSTR(AC_DESCRIPTION,'[6-8]0{2}') AS AC_SERIES,
AC_SN, VARIABLE_ENGINEERING_NO, EFFECTIVITY_CODE, AC, AC_FLIGHT_HOURS, AC_FLIGHT_MINUTES, AC_CYCLES
FROM ODB.AC_MASTER
WHERE AC_TYPE='737' AND AC='201'
)
,
FPARTS AS
(
SELECT PM.PN_DESCRIPTION, PM."CATEGORY", PID.INSTALLED_AC, PM.ENGINE, PID.INSTALLED_POSITION,
TO_DATE(TO_CHAR(PID.INSTALLED_DATE,'MM/DD/YYYY') || ' ' ||
COALESCE(PID.INSTALLED_HOUR,0) || ':' || COALESCE(PID.INSTALLED_MINUTE,0) ||
':00','MM/DD/YYYY HH24:MI:SS') AS INSTALLED_DATE,
PIC.PN, PIC.SN, PIC.ACTUAL_HOURS,
PIC.ACTUAL_MINUTES, PIC.ACTUAL_CYCLES,
PIC.ACTUAL_DAYS, PID.GOODS_RCVD_BATCH,
DECODE(PM.ENGINE,'APU',6,'ENGINE',TO_NUMBER(REGEXP_SUBSTR(PID.INSTALLED_POSITION,'[1-2]')),
DECODE(SUBSTR(PM.PN_DESCRIPTION,1,3),'NLG',3,DECODE(MOD(ABS(REGEXP_SUBSTR(PID.PN,'-\d{2}$')),2),1,4,5)))
AS SORTID,
ROW_NUMBER() OVER(ORDER BY PID.GOODS_RCVD_BATCH) AS ROWPK
FROM
ODB.PN_INVENTORY_CONTROL PIC INNER JOIN
(ODB.PN_MASTER PM INNER JOIN ODB.PN_INTERCHANGEABLE PI ON PM.PN = PI.PN
) ON PIC.PN = PI.PN_INTERCHANGEABLE
INNER JOIN
ODB.PN_INVENTORY_DETAIL PID ON PIC.PN = PID.PN AND PIC.SN = PID.SN
INNER JOIN DIMAC ON PID.INSTALLED_AC = DIMAC.AC
WHERE (PM.STATUS='ACTIVE' AND
PM.CATEGORY ='ENG NG' AND PM.ENGINE
IN('ENGINE','APU')) OR PM.PN_DESCRIPTION IN('NLG COMPONENT INSTL','MLG
COMPONENT INSTL') AND
PIC.CONTROL = 'FROM NEW'
)
,
FPARTSZ AS
(
SELECT
FPARTS.INSTALLED_AC, FPARTS.INSTALLED_DATE, FPARTS.GOODS_RCVD_BATCH,
FPARTS.ROWPK
FROM
FPARTS
WHERE
FPARTS.GOODS_RCVD_BATCH NOT IN(SELECT
APTH.GOODS_RCVD_BATCH
FROM
ODB.AC_PN_TRANSACTION_HISTORY APTH INNER
JOIN FPARTS ON APTH.GOODS_RCVD_BATCH =
FPARTS.GOODS_RCVD_BATCH
WHERE TRANSACTION_TYPE = 'REMOVE'
)
AND FPARTS.INSTALLED_DATE<'15-JAN-2005'
)
,
ZVALUE AS
(
SELECT
SUM(AAF.FLIGHT_HOURS) + TRUNC(SUM(AAF.FLIGHT_MINUTES)/60) AS ZHRS,
MOD(SUM(AAF.FLIGHT_MINUTES),60) AS ZMIN, SUM(AAF.CYCLES) AS ZCYCLES,
FPARTSZ.INSTALLED_DATE - MIN(AAF.FLIGHT_DATE) AS ZDAYS,
FPARTSZ.ROWPK
FROM ODB.AC_ACTUAL_FLIGHTS AAF
INNER JOIN FPARTSZ ON AAF.AC = FPARTSZ.INSTALLED_AC
WHERE
UPPER(AAF.FLIGHT_LOG)<>'Z' AND EXISTS (SELECT 1 FROM (SELECT
INSTALLED_AC, INSTALLED_DATE, ROWPK
FROM FPARTSZ )T1
WHERE
T1.INSTALLED_AC = AAF.AC AND FPARTSZ.ROWPK = T1.ROWPK AND
TO_DATE(TO_CHAR(AAF.FLIGHT_DATE,'MM/DD/YYYY')||'
'||TO_CHAR(AAF.OFF_HOUR)||':'||TO_CHAR(AAF.OFF_MINUTE)||':00','MM/DD/YYYY
HH24:MI:SS') <= T1.INSTALLED_DATE
)
GROUP BY FPARTSZ.ROWPK, FPARTSZ.INSTALLED_DAT
)
,
TSIAF AS
(
SELECT
SUM(AAF.FLIGHT_HOURS) + TRUNC(SUM(AAF.FLIGHT_MINUTES)/60) AS TSIHRS,
MOD(SUM(AAF.FLIGHT_MINUTES),60) AS TSIMIN, SUM(AAF.CYCLES) AS TSICYCLES,
TRUNC(FROM_TZ(CAST(SYSDATE AS TIMESTAMP),'America/Edmonton') AT TIME
ZONE 'GMT') - TRUNC(
FPARTS.INSTALLED_DATE) AS TSIDAYS,
FPARTS.ROWPK
FROM
ODB.AC_ACTUAL_FLIGHTS AAF INNER JOIN FPARTS ON AAF.AC= FPARTS.INSTALLED_AC
WHERE
FPARTS.ENGINE <>'APU' AND EXISTS (SELECT 1 FROM (SELECT
INSTALLED_AC, INSTALLED_DATE, ROWPK
FROM FPARTS )T1
WHERE T1.INSTALLED_AC = AAF.AC AND FPARTS.ROWPK = T1.ROWPK AND
TO_DATE(TO_CHAR(AAF.FLIGHT_DATE,'MM/DD/YYYY')||'
'||TO_CHAR(AAF.OFF_HOUR)||':'||TO_CHAR(AAF.OFF_MINUTE)||':00','MM/DD/YYYY
HH24:MI:SS') >= T1.INSTALLED_DATE
)
GROUP BY FPARTS.ROWPK, FPARTS.INSTALLED_DATE
)
,
TAPU AS
(
SELECT
SUM(T1.HOURS) + TRUNC(SUM(T1.MINUTES)/60) AS HOURS, MOD(SUM(T1.MINUTES),60) AS
MINUTES, SUM(T1.CYCLES) AS CYCLES,
MAX(T1.ROWPK) AS ROWPK
FROM(
SELECT HOURS, MINUTES, CYCLES, FPARTS.ROWPK
FROM ODB.PN_INVENTORY_TIMES_ACCRUAL PITA INNER JOIN FPARTS ON
PITA.GOODS_RCVD_BATCH = FPARTS.GOODS_RCVD_BATCH
WHERE FPARTS.ENGINE='APU' AND UPPER(TRANSACTION_TYPE) IN('Z','ADD')
UNION ALL
SELECT HOURS, MINUTES, CYCLES, FPARTS.ROWPK
FROM ODB.PN_TIME_ADJUSTMENT PTA INNER JOIN FPARTS ON PTA.PN = FPARTS.PN
AND PTA.SN = FPARTS.SN
WHERE FPARTS.ENGINE='APU'
)T1
)
SELECT T1.INSTALLED_AC, T1.ENGINE, T1.INSTALLED_POSITION,
T1.PN_DESCRIPTION, T1.PN, T1.SN,
T1."CATEGORY",
T1.INSTALLED_DATE, T1.GOODS_RCVD_BATCH,
T1.TSN_HOURS, T1.TSN_MINUTES, T1.TSN_CYCLES, T1.TSN_DAYS
FROM (
SELECT
FPARTS.PN_DESCRIPTION, FPARTS."CATEGORY", FPARTS.INSTALLED_AC,
FPARTS.INSTALLED_DATE, FPARTS.GOODS_RCVD_BATCH,
FPARTS.PN, FPARTS.SN,FPARTS.ENGINE, FPARTS.INSTALLED_POSITION,
FPARTS.SORTID,
COALESCE(TSIAF.TSIHRS + (CASE WHEN ZVALUE.ROWPK IS NOT NULL THEN ZVALUE.ZHRS ELSE FPARTS.ACTUAL_HOURS END) +
TRUNC((TSIAF.TSIMIN + (CASE WHEN ZVALUE.ROWPK IS NOT NULL THEN ZVALUE.ZMIN ELSE FPARTS.ACTUAL_MINUTES
END))/60),TAPU.HOURS) AS TSN_HOURS,
COALESCE(MOD(TSIAF.TSIMIN + (CASE WHEN ZVALUE.ROWPK IS NOT NULL
THEN ZVALUE.ZMIN ELSE
FPARTS.ACTUAL_MINUTES END),60), TAPU.MINUTES) AS TSN_MINUTES,
COALESCE(TSIAF.TSICYCLES + (CASE WHEN ZVALUE.ROWPK IS NOT NULL THEN ZVALUE.ZCYCLES ELSE FPARTS.ACTUAL_CYCLES
END),TAPU.CYCLES) AS TSN_CYCLES,
TSIAF.TSIDAYS + (CASE WHEN ZVALUE.ROWPK IS NOT NULL THEN ZVALUE.ZDAYS ELSE FPARTS.ACTUAL_DAYS END) AS
TSN_DAYS
FROM
FPARTS LEFT OUTER JOIN ZVALUE ON FPARTS.ROWPK = ZVALUE.ROWPK
LEFT OUTER
JOIN TSIAF ON FPARTS.ROWPK = TSIAF.ROWPK
LEFT OUTER JOIN TAPU ON
FPARTS.ROWPK = TAPU.ROWPK
)T1
ORDER BY T1.SORTID