Hallo,
ich habe folgende SQL- Anweisung.
Die DECODE Anweisung funktioniert nicht.
Folgendes: Die erste DECODE Anweisung wird ausgeführt.
Die anderen Felder, wo die zweite DECODE- Anweisung durchgeführt werden sollte, bleiben leer oder werden mit "0" gefüllt.
Starte ich dieses SQL nur mit der zweiten DECODE- Anweisung (g_ccy.ccy_n_euritg = '0'), dann wird das Feld EURO mit "11" gefüllt.
SELECT
DECODE (g_ccy.ccy_n_euritg,'1',
(SELECT i_sea.sea_m_bkgpos * g_ccy.ccy_n_eurcvrrat
FROM g_ccy
WHERE g_ccy.ccy_n_int = i_sec.ccy_n_int),
'0',
(SELECT i_sea.sea_m_bkgpos * g_ccyexr.ccy_n_spt
FROM g_ccyexr, i_sea, i_sec, g_ccy
WHERE g_ccyexr.ccy_n_int = i_sec.ccy_n_int
AND g_ccyexr.ccy_d_dat = (SELECT datum from test
WHERE g_ccyexr.ccy_n_int = test.ccy_n_int)
AND g_ccyexr.ccy_n_int = i_sea.ccy_n_int
AND i_sec.sec_n_int = sea.cus_n_int), '11') EURO
AND i_sec.sec_n_int = i_sea.cus_n_int),11) EURO
FROM [...]
WHERE [...]
Das Ganze habe ich auch schon mit der CASE- Funktion versucht, jedoch mit dem gleichen Resultat:
SELECT I_SEA.name
CASE WHEN
g_ccy.ccy_n_euritg = '0'
THEN
(SELECT i_sea.sea_m_bkgpos * g_ccyexr.ccy_n_spt
FROM g_ccyexr, i_sea, i_sec, g_ccy
WHERE g_ccyexr.ccy_n_int = i_sec.ccy_n_int
AND g_ccyexr.ccy_d_dat = (SELECT datum from test
WHERE g_ccyexr.ccy_n_int = test.ccy_n_int)
AND g_ccyexr.ccy_n_int = i_sea.ccy_n_int)
ELSE
(SELECT i_sea.sea_m_bkgpos * g_ccy.ccy_n_eurcvrrat
FROM g_ccy
WHERE g_ccy.ccy_n_int = i_sec.ccy_n_int)
END EURO
FROM [...]
WHERE [...]
Wer kann mir helfen?
Bin für jeden Tip dankbar,
Stephanie
ich habe folgende SQL- Anweisung.
Die DECODE Anweisung funktioniert nicht.
Folgendes: Die erste DECODE Anweisung wird ausgeführt.
Die anderen Felder, wo die zweite DECODE- Anweisung durchgeführt werden sollte, bleiben leer oder werden mit "0" gefüllt.
Starte ich dieses SQL nur mit der zweiten DECODE- Anweisung (g_ccy.ccy_n_euritg = '0'), dann wird das Feld EURO mit "11" gefüllt.
SELECT
DECODE (g_ccy.ccy_n_euritg,'1',
(SELECT i_sea.sea_m_bkgpos * g_ccy.ccy_n_eurcvrrat
FROM g_ccy
WHERE g_ccy.ccy_n_int = i_sec.ccy_n_int),
'0',
(SELECT i_sea.sea_m_bkgpos * g_ccyexr.ccy_n_spt
FROM g_ccyexr, i_sea, i_sec, g_ccy
WHERE g_ccyexr.ccy_n_int = i_sec.ccy_n_int
AND g_ccyexr.ccy_d_dat = (SELECT datum from test
WHERE g_ccyexr.ccy_n_int = test.ccy_n_int)
AND g_ccyexr.ccy_n_int = i_sea.ccy_n_int
AND i_sec.sec_n_int = sea.cus_n_int), '11') EURO
AND i_sec.sec_n_int = i_sea.cus_n_int),11) EURO
FROM [...]
WHERE [...]
Das Ganze habe ich auch schon mit der CASE- Funktion versucht, jedoch mit dem gleichen Resultat:
SELECT I_SEA.name
CASE WHEN
g_ccy.ccy_n_euritg = '0'
THEN
(SELECT i_sea.sea_m_bkgpos * g_ccyexr.ccy_n_spt
FROM g_ccyexr, i_sea, i_sec, g_ccy
WHERE g_ccyexr.ccy_n_int = i_sec.ccy_n_int
AND g_ccyexr.ccy_d_dat = (SELECT datum from test
WHERE g_ccyexr.ccy_n_int = test.ccy_n_int)
AND g_ccyexr.ccy_n_int = i_sea.ccy_n_int)
ELSE
(SELECT i_sea.sea_m_bkgpos * g_ccy.ccy_n_eurcvrrat
FROM g_ccy
WHERE g_ccy.ccy_n_int = i_sec.ccy_n_int)
END EURO
FROM [...]
WHERE [...]
Wer kann mir helfen?
Bin für jeden Tip dankbar,
Stephanie
Comment