For some reason, I can’t get this query to perform as I’m getting an error:
x
Token ( was not valid. Valid tokens: , FROM INTO.
I’m running this in DB2 and I think this is occurring at either the very first line of the 2nd with/as
at ) , A AS ( SELECT
Where am I going wrong?
WITH
RES (PRODUCT_ID, JOB_STATUS, JOB_STATUS_TIME) AS
(
select
T1.NAME,
t2.PRODUCT_id as PRODUCT_ID,
t3.product_id,
t3.created_at,
t5.name as JOB_STATUS,
t4.row_created_timestamp as JOB_STATUS_TIME ,
t3.expiration_timestamp
from schema.PRODUCT T1
inner join schema.PRODUCT_to_product T2
on t1.PRODUCT_id = t2.PRODUCT_id
inner join schema.product t3
on t2.product_id = t3.product_id
inner join schema.product_to_job_statust t4
on t3.product_id = t4.product_id
inner join schema.job_statust t5
on t4.job_statust_id = t5.job_statust_id
where t3.job_typet_id = 2
and t3.created_at >= '2019-09-20'
and t5.name <> 'D'
order by t1.name,t3.product_id
)
, A AS
(
SELECT
PRODUCT_ID, JOB_STATUS
, JOB_STATUS_TIME
, LEAD (JOB_STATUS_TIME) OVER (PARTITION BY PRODUCT_ID ORDER BY JOB_STATUS_TIME) AS JOB_STATUS_TIME_NEXT
FROM RES
)
SELECT
PRODUCT_ID
, COUNT(CASE JOB_STATUS WHEN 'O' THEN 1 END) AS CREATED
, COUNT(CASE JOB_STATUS WHEN 'C' THEN 1 END) AS COMPLETED
, COUNT(CASE JOB_STATUS WHEN 'X' THEN 1 END) AS CANCELLED
, SUM
(
CASE JOB_STATUS WHEN 'P' THEN
(DAYS(JOB_STATUS_TIME_NEXT) - DAYS(JOB_STATUS_TIME)) * 86400
+ MIDNIGHT_SECONDS(JOB_STATUS_TIME_NEXT) - MIDNIGHT_SECONDS(JOB_STATUS_TIME)
END
) / 60 AS ACTIVE_MINUTES
FROM A
GROUP BY PRODUCT_ID;
Advertisement
Answer
It is always a good idea to use an SQL Editor that supports the version of Db2 that you are using.
Looking at your SQL in IBM Data Studio with the validation set to DB2 for i 7.2
, highlights the following line in red underscores
, LEAD (JOB_STATUS_TIME) OVER (PARTITION BY PRODUCT_ID ORDER BY JOB_STATUS_TIME) AS JOB_STATUS_TIME_NEXT`
Cross referencing to the manual, I can see that LEAD
is supported in Db2 for i 7.3 but not Db2 for i 7.2
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_74/db2/rbafzolapexp.htm
So that would be my guess at your syntax error