Unix Technical Forum

How to convert: Oracle to DB/2

This is a discussion on How to convert: Oracle to DB/2 within the DB2 forums, part of the Database Server Software category; --> Hi, I've got a complex Oracle-SQL-statement and I want to convert it to DB/ 2: INSERT INTO TBZL2000CSFLQ_AGG( Solve_Name, ...


Go Back   Unix Technical Forum > Database Server Software > DB2

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 02-27-2008, 01:47 PM
Sascha.Moellering@gmail.com
 
Posts: n/a
Default How to convert: Oracle to DB/2

Hi,

I've got a complex Oracle-SQL-statement and I want to convert it to DB/
2:

INSERT INTO TBZL2000CSFLQ_AGG(
Solve_Name,
Scenario,
Korrektur_KZ,
EventDate,
EventCurrency,
CLI,
FXB,
RefNodeID_KAB,
RefNodeID_LIQ,
RefNodeID_ZAB,
TBS1_Name,
TBS1_Start,
TBS1_End,
TBS2_Name,
TBS2_Start,
TBS2_End,
Cashflow_Sign
) SELECT
MC.type,
NVL(MC.scenario, 0),
'M',
CASE WHEN MC.fixed_date IS NULL
THEN DateAdd([Reportdatum], "d", MC.rel_shift)
ELSE MC.fixed_date
END,
MC.ccy,
MC.amount,
FX.quoted_price_fx,
CASE WHEN MC.type = 'KAB' THEN ET.nodeid ELSE NULL END,
CASE WHEN MC.type = 'LIQ' THEN ET.nodeid ELSE NULL END,
CASE WHEN MC.type = 'ZAB' THEN ET.nodeid ELSE NULL END,
CASE WHEN MC.type = 'ZAB' THEN 'BII' ELSE 'STD' END AS tbs1_name,
CASE WHEN MC.type = 'ZAB' THEN NVL(tb1.tbs_start, (SELECT
MAX(tbs_start) FROM TBZL0318TBS_AGG WHERE tbs_name = 'BII')) ELSE
NVL(tb1.tbs_start, (SELECT MAX(tbs_start) FROM TBZL0318TBS_AGG WHERE
tbs_name = 'STD')) END AS tbs1_start,
CASE WHEN MC.type = 'ZAB' THEN NVL(tb1.tbs_start, (SELECT
MAX(tbs_start) FROM TBZL0318TBS_AGG WHERE tbs_name = 'BII')) ELSE
NVL(tb1.tbs_end, (SELECT MAX(tbs_end) FROM TBZL0318TBS_AGG WHERE
tbs_name = 'STD')) END AS tbs1_end,
CASE WHEN MC.type = 'ZAB' THEN NULL ELSE '180D' END AS tbs2_name,
CASE WHEN MC.type = 'ZAB' THEN NULL ELSE NVL(tb2.tbs_start, (SELECT
MAX(tbs_start) FROM TBZL0318TBS_AGG WHERE tbs_name = '180D')) END AS
tbs2_start,
CASE WHEN MC.type = 'ZAB' THEN NULL ELSE NVL(tb2.tbs_end, (SELECT
MAX(tbs_end) FROM TBZL0318TBS_AGG WHERE tbs_name = '180D')) END AS
tbs2_end
CASE WHEN MC.amount < 0 THEN '-' ELSE '+' END AS cashflow_sign
FROM
TBZL2011PAR_MANCOR AS MC,
(SELECT * FROM TBZL0318TBS_AGG
WHERE tbs_name = CASE WHEN MC.type = 'ZAB' THEN 'BII' ELSE 'STD' END)
AS TB1,
(SELECT * FROM TBZL0318TBS_AGG
WHERE tbs_name = CASE WHEN MC.type = 'ZAB' THEN 'BII' ELSE '180D' END)
AS TB2,
HY_ENTITY_TREE AS ET,
FX_RATE_OBSERVATION AS FX
WHERE
CASE WHEN MC.fixed_date IS NULL
THEN DateAdd([Reportdatum], "d", MC.rel_shift)
ELSE MC.fixed_date
END = TB1.tbs_date (+) AND
CASE WHEN MC.fixed_date IS NULL
THEN DateAdd([Reportdatum], "d", MC.rel_shift)
ELSE MC.fixed_date
END = TB2.tbs_date (+) AND
MC.type = ET.entityname AND
MC.mnemonic = ET.fullmnemonic AND
MC.delete_time IS NULL AND
MC.valid_from >= Laufdatum (Globalvariable aus Jobsteuerung) AND
MC.ccy = substr(FX.market_object_code,5,3)

Any hints?

Thank you in advance,
Sascha

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 02-27-2008, 01:47 PM
Serge Rielau
 
Posts: n/a
Default Re: How to convert: Oracle to DB/2

Sascha,

I see only two issues:
1. Replace all occurances of NVL with COALESCE
That should be trivial.
2. Strip the (+) boolean factors and replace the FROM clause with (also
fix DATEADD):
FROM TBZL2011PAR_MANCOR AS MC
LEFT OUTER JOIN LATERAL
(SELECT * FROM TBZL0318TBS_AGG
WHERE tbs_name = CASE WHEN MC.type = 'ZAB' THEN 'BII' ELSE 'STD' END)
AS TB1
ON CASE WHEN MC.fixed_date IS NULL
THEN [Reportdatum] + MC.rel_shift DAYS
ELSE MC.fixed_date
END = TB1.tbs_date
LEFT OUTER JOIN LATERAL
(SELECT * FROM TBZL0318TBS_AGG
WHERE tbs_name = CASE WHEN MC.type = 'ZAB' THEN 'BII' ELSE '180D' END)
AS TB2
ON CASE WHEN MC.fixed_date IS NULL
THEN [Reportdatum] + MC.rel_shift DAYS
ELSE MC.fixed_date
END = TB2.tbs_date

I don't know what [ReportDatum] means in brackets...

Cheers
Serge
--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 02-27-2008, 01:47 PM
Sascha.Moellering@gmail.com
 
Posts: n/a
Default Re: How to convert: Oracle to DB/2

Great, thank you, I forgot LATERAL ...

Regards,
Sascha

On Jun 15, 2:51 pm, Serge Rielau <srie...@ca.ibm.com> wrote:
> Sascha,
>
> I see only two issues:
> 1. Replace all occurances of NVL with COALESCE
> That should be trivial.
> 2. Strip the (+) boolean factors and replace the FROM clause with (also
> fix DATEADD):
> FROM TBZL2011PAR_MANCOR AS MC
> LEFT OUTER JOIN LATERAL
> (SELECT * FROM TBZL0318TBS_AGG
> WHERE tbs_name = CASE WHEN MC.type = 'ZAB' THEN 'BII' ELSE 'STD' END)
> AS TB1
> ON CASE WHEN MC.fixed_date IS NULL
> THEN [Reportdatum] + MC.rel_shift DAYS
> ELSE MC.fixed_date
> END = TB1.tbs_date
> LEFT OUTER JOIN LATERAL
> (SELECT * FROM TBZL0318TBS_AGG
> WHERE tbs_name = CASE WHEN MC.type = 'ZAB' THEN 'BII' ELSE '180D' END)
> AS TB2
> ON CASE WHEN MC.fixed_date IS NULL
> THEN [Reportdatum] + MC.rel_shift DAYS
> ELSE MC.fixed_date
> END = TB2.tbs_date
>
> I don't know what [ReportDatum] means in brackets...
>
> Cheers
> Serge
> --
> Serge Rielau
> DB2 Solutions Development
> IBM Toronto Lab



Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 02-27-2008, 01:47 PM
Serge Rielau
 
Posts: n/a
Default Re: How to convert: Oracle to DB/2

Then again, you can just go here:
http://www-306.ibm.com/software/data.../openbeta.html
And all you need to do is fix the date arithmetic :-)

I'll post shortly on some stuff you may want to know.

Cheers
Serge
--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 10:05 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com