I'm writing what would seem to me to be a very simple query, but for some reason, keep getting an error. The two queries run separately, but the UNION seems to throw it for a loop:
AIM.BILLING - Build started.
DROP SPECIFIC PROCEDURE AIM.BILLING
AIM.BILLING - Drop stored procedure completed.
Create stored procedure returns -104.
AIM.BILLING: 69: [IBM][CLI Driver][DB2/NT] SQL0104N An unexpected token "SELECT AIMRETRIEVEDITEM.ROUTINGTRANSITNU" was found following "SOR WITH RETURN FOR ". Expected tokens may include: "<values>". LINE NUMBER=69. SQLSTATE=42601
Could someone take a look at this bad boy and maybe give me some clues just what it is I'm doing wrong?
Thanks in advance!!
CREATE PROCEDURE AIM.BILLING
(IN TSFROMDATE TIMESTAMP,
IN TSTODATE TIMESTAMP
)
SPECIFIC AIM.BILLING
DYNAMIC RESULT SETS 1
LANGUAGE SQL
P1: BEGIN
DECLARE SELECT_CURSOR CURSOR WITH RETURN FOR
SELECT AIMRETRIEVEDITEM.ROUTINGTRANSITNUMBER, AIMRETRIEVEDITEM.POSTINGACCOUNTNUMBER, AIMRETRIEVEDITEM.BANKNUMBER, 'IN-BOX' AS DELIVERYMETHOD, ARCHIVERETRIEVAL.ARCHIVERETRIEVALRECEIPT AS REQUESTDATE,
COUNT(AIMRETRIEVEDITEMID) AS VOLUME,
CASE
WHEN APPLICATIONID = 'DDA' AND CREDITDEBITFLAG IS NOT NULL
THEN '5639'
ELSE '5641'
END
AS CHARGEFEECODE
FROM AIM.CHANNEL CHANNEL,
AIM.CHANNELSESSION CHANNELSESSION,
AIM.AIMRETRIEVEDITEM AIMRETRIEVEDITEM,
AIM.ARCHIVERETRIEVAL ARCHIVERETRIEVAL,
AIM.AIMRETRIEVAL AIMRETRIEVAL,
AIM.AIMQUERY AIMQUERY,
AIM.AIMCONNECTION AIMCONNECTION
WHERE
AIMRETRIEVEDITEM.ARCHIVERETRIEVALID = ARCHIVERETRIEVAL.ARCHIVERETRIEVALID
AND ARCHIVERETRIEVAL.ARCHIVERETRIEVALRECEIPT <= tsToDate AND ARCHIVERETRIEVAL.ARCHIVERETRIEVALRECEIPT >= tsFromDate
AND ARCHIVERETRIEVAL.AIMRETRIEVALID = AIMRETRIEVAL.AIMRETRIEVALID
AND AIMRETRIEVAL.AIMQUERYID = AIMQUERY.AIMQUERYID
AND AIMQUERY.AIMCONNECTIONID = AIMCONNECTION.AIMCONNECTIONID
AND AIMCONNECTION.CHANNELSESSIONID = CHANNELSESSION.CHANNELSESSIONID
AND CHANNELSESSION.CHANNELID = CHANNEL.CHANNELID
AND CHANNEL.CHANNEL IN ('RIB', 'INTRANET')
UNION
SELECT AIMRETRIEVEDSTATEMENT.ROUTINGTRANSITNUMBER, AIMRETRIEVEDSTATEMENT.ACCOUNTNUMBER AS POSTINGACCOUNTNUMBER, AIMRETRIEVEDSTATEMENT.BANKNUMBER,
CASE
WHEN DELIVERYMETHOD IN('PRINT', 'MAIL')
THEN 'MAIL'
ELSE DELIVERYMETHOD.DELIVERYMETHOD
END
,ARCHIVERETRIEVAL.ARCHIVERETRIEVALRECEIPT AS REQUESTDATE,
COUNT(AIMRETRIEVEDSTATEMENTID) AS VOLUME, '5640' AS CHARGEFEECODE
FROM AIM.CHANNEL CHANNEL,
AIM.CHANNELSESSION CHANNELSESSION,
AIM.AIMRETRIEVEDSTATEMENT,
AIM.ARCHIVERETRIEVAL ARCHIVERETRIEVAL,
AIM.AIMRETRIEVAL AIMRETRIEVAL,
AIM.AIMQUERY AIMQUERY,
AIM.AIMCONNECTION AIMCONNECTION,
AIM.DELIVERYMETHOD DELIVERYMETHOD,
AIM.DELIVERY DELIVERY
WHERE
AIMRETRIEVEDSTATEMENT.ARCHIVERETRIEVALID = ARCHIVERETRIEVAL.ARCHIVERETRIEVALID
AND ARCHIVERETRIEVAL.ARCHIVERETRIEVALID = DELIVERY.ARCHIVERETRIEVALID
AND DELIVERY.DELIVERMETHODID = DELIVERYMETHOD.DELIVERYMETHODID
AND ARCHIVERETRIEVAL.ARCHIVERETRIEVALRECEIPT <= tsToDate AND AIM.ARCHIVERETRIEVAL.ARCHIVERETRIEVALRECEIPT >= tsFromDate
AND ARCHIVERETRIEVAL.AIMRETRIEVALID = AIMRETRIEVAL.AIMRETRIEVALID
AND AIMRETRIEVAL.AIMQUERYID = AIMQUERY.AIMQUERYID
AND AIMQUERY.AIMCONNECTIONID = AIMCONNECTION.AIMCONNECTIONID
AND AIMCONNECTION.CHANNELSESSIONID = CHANNELSESSION.CHANNELSESSIONID
AND CHANNELSESSION.CHANNELID = CHANNEL.CHANNELID
AND CHANNEL.CHANNEL = 'INTRANET'
FOR FETCH ONLY WITH UR
GROUP BY ROUTINGTRANSITNUMBER, POSTINGACCOUNTNUMBER, ARCHIVERETRIEVALRECEIPT, BANKNUMBER, REQUESTDATE;
OPEN SELECT_CURSOR;
END P1