[oracle 9.1] Variabele1 - variabele 2 ?

Pagina: 1
Acties:

  • R.A.
  • Registratie: Januari 2004
  • Niet online
Ligt het nou aan mij of kan Oracle geen variabelen aftrekken van elkaar.
Ik heb 2 variabelen die met een paar cases gemaakt zijn. Nou wil ik een andere column die variabelen van elkaar aftrekken. Maar Oracle geeft telkens een fout. Is het mogelijk om dit te doen? En zoja hoe. Alvast bedankt

  • whoami
  • Registratie: December 2000
  • Laatst online: 25-05 23:56
Ja het is mogelijk, maar wat bedoel je met variablen? Je bedoelt columns in je query?

code:
1
2
select column1 - column2
from blaat


Gebruik je aliassen ?

https://fgheysels.github.io/


Verwijderd

Dit is echt zo'n "Het gaat fout" vraag.....maar je geeft totaal geen info waarmee we het zouden kunnen oplossen !

Queries ?
Foutmelding(en) ?

  • R.A.
  • Registratie: Januari 2004
  • Niet online
Verwijderd schreef op 06 mei 2004 @ 10:54:
Dit is echt zo'n "Het gaat fout" vraag.....maar je geeft totaal geen info waarmee we het zouden kunnen oplossen !

Queries ?
Foutmelding(en) ?
Ik zal de variabelen geven:

AP_AD_PAYERS.APAY_P_DISC1_SUM + AP_AD_PAYERS.APAY_P_DISC2_SUM + AP_AD_PAYERS.APAY_A_DISC1_SUM + AP_AD_PAYERS.APAY_A_DISC2_SUM AS Sub1korting,

(case when AP_AD_PAYERS.APAY_SHARE_TYPE = 2 then 0
Else
(AP_AD_PAYERS.APAY_TOTAL_PRICE - ((AP_AD_PAYERS.APAY_PRICE + AP_AD_PAYERS.APAY_C_PRICE) - (AP_AD_PAYERS.APAY_P_DISC1_SUM + AP_AD_PAYERS.APAY_P_DISC2_SUM + AP_AD_PAYERS.APAY_A_DISC1_SUM + AP_AD_PAYERS.APAY_A_DISC2_SUM)))
End) Sub2korting,

(case when AP_AD_PAYERS.APAY_SHARE_TYPE = '2' Or (AP_AD_PAYERS.APAY_SHARE_TYPE = '0' And AP_AD_PAYERS.APAY_SHARE= '1') then 0
Else
sub2korting - sub1korting
End) TotaleKorting

Maar hij geeft nu dus de fout bij sub2korting - sub1korting.

<edit> met variabelen bedoel ik eigenlijk aliassen, sorry </edit>

[ Voor 7% gewijzigd door R.A. op 06-05-2004 10:57 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Je mag niet naar andere kolommen van dezelfde select refereren.
Je kunt dit bijvoorbeeld oplossen met een in-line view.

Who is John Galt?


  • R.A.
  • Registratie: Januari 2004
  • Niet online
justmental schreef op 06 mei 2004 @ 10:58:
Je mag niet naar andere kolommen van dezelfde select refereren.
Je kunt dit bijvoorbeeld oplossen met een in-line view.
En hoe zou ik dit moeten toepassen? Ik heb daar nl nog nooit mee gewerkt.

Verwijderd

aaah, nu snap ik het. Ik ben hetzelfde tegengekomen, en je kunt inderdaad geen aliassen in berekeningen in dezeflde query gebruiken. Daarom heb ik dus in die gevallen een query op de query gemaakt die dan de tweede berekening doet.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

R.A. schreef op 06 mei 2004 @ 11:02:
En hoe zou ik dit moeten toepassen? Ik heb daar nl nog nooit mee gewerkt.
code:
1
2
3
4
5
6
7
select bla.kolom1
, bla.kolom2
, bla.kolom2-bla.kolom1
from (select case... kolom1
      , case... kolom2
      from bla2
      ) bla

Who is John Galt?


  • R.A.
  • Registratie: Januari 2004
  • Niet online
Verwijderd schreef op 06 mei 2004 @ 11:02:
aaah, nu snap ik het. Ik ben hetzelfde tegengekomen, en je kunt inderdaad geen aliassen in berekeningen in dezeflde query gebruiken. Daarom heb ik dus in die gevallen een query op de query gemaakt die dan de tweede berekening doet.
En hoe doet men dit dan? Kan je misschien een kleine voorbeeld geven? Zit echt met mn handen in mn haar

Verwijderd

Gewoon de eerste query weer als bron gebruiken in een tweede query

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Create or replace view query1 as (
  Select 
    blaat1, 
    blaat2 
  from 
    tabelletje
}

Create or replace view query2 as (
  Select 
    blaat1 - blaat2 as blaat3 
  from 
    query1
)

  • R.A.
  • Registratie: Januari 2004
  • Niet online
Oke dank je wel. Hier kan ik mee verder. Bedankt voor alle snelle reply's
Pagina: 1