Sql-Translation: Oracle to DB2 Hello,
I want to tanslate the following Oracle-SQL to DB2, but I'm stuck, any
hints?
Thank you in advance.
UPDATE TBZL0361CSFLQ_AGG CF
INNER JOIN (SELECT * FROM TBS_AGG WHERE tbs_name = CASE WHEN
CF.solve_name = 'ZAB'
THEN 'BII' ELSE 'STD' END) AS TB1 ON (CF.eventdate = TB1.tbs_date)
INNER JOIN (SELECT * FROM TBS_AGG WHERE tbs_name = CASE WHEN
CF.solve_name = 'ZAB'
THEN 'BII' ELSE '180D' END) AS TB2 ON (CF.eventdate = TB2.tbs_date)
SET
(CF.TBS1_Name,
CF.TBS1_Start,
CF.TBS1_End,
CF.TBS2_Name,
CF.TBS2_Start,
CF.TBS2_End) =
(SELECT
CASE WHEN CF.solve_name = 'ZAB' THEN 'BII' ELSE 'STD' END,
CASE WHEN CF.solve_name = 'ZAB' THEN NVL(tb1.tbs_start, (SELECT
MAX(tbs_start) FROM TBS_AGG WHERE tbs_name = 'BII')) ELSE
NVL(tb1.tbs_start, (SELECT MAX(tbs_start) FROM TBS_AGG WHERE tbs_name
= 'STD')) END,
CASE WHEN CF.solve_name = 'ZAB' THEN NVL(tb1.tbs_start, (SELECT
MAX(tbs_start) FROM TBS_AGG WHERE tbs_name = 'BII')) ELSE
NVL(tb1.tbs_end, (SELECT MAX(tbs_end) FROM TBS_AGG WHERE tbs_name =
'STD')) END,
CASE WHEN CF.solve_name = 'ZAB' THEN NULL ELSE '180D' END,
CASE WHEN CF.solve_name = 'ZAB' THEN NULL ELSE NVL(tb2.tbs_start,
(SELECT MAX(tbs_start) FROM TBS_AGG WHERE tbs_name = '180D')) END,
CASE WHEN CF.solve_name = 'ZAB' THEN NULL ELSE NVL(tb2.tbs_end,
(SELECT MAX(tbs_end) FROM TBS_AGG WHERE tbs_name = '180D')) END
)
WHERE
korrektur_kz='M'
Best regards,
Sascha |