sql >> Database >  >> RDS >> Oracle

Een alias gebruiken in een WHERE-component

Dit is niet direct mogelijk, omdat chronologisch, WAAR gebeurt voor SELECT, wat altijd de laatste stap is in de uitvoeringsketen.

Je kunt er een subselectie op doen en erop filteren:

SELECT * FROM
(
  SELECT A.identifier
    , A.name
    , TO_NUMBER(DECODE( A.month_no
      , 1, 200803 
      , 2, 200804 
      , 3, 200805 
      , 4, 200806 
      , 5, 200807 
      , 6, 200808 
      , 7, 200809 
      , 8, 200810 
      , 9, 200811 
      , 10, 200812 
      , 11, 200701 
      , 12, 200702
      , NULL)) as MONTH_NO
    , TO_NUMBER(TO_CHAR(B.last_update_date, 'YYYYMM')) as UPD_DATE
  FROM table_a A
    , table_b B
  WHERE A.identifier = B.identifier
) AS inner_table
WHERE 
  MONTH_NO > UPD_DATE

Interessant stukje info verplaatst naar de reacties:

Er zou geen prestatieverlies moeten zijn. Oracle hoeft geen innerlijke query's te materialiseren voordat uiterlijke voorwaarden worden toegepast - Oracle zal overwegen deze query intern te transformeren en het predikaat naar beneden in de innerquery te duwen en zal dit doen als dit kosteneffectief is. – Justin Grot



  1. ondersteunt rails postgres adapter ssl?

  2. Dapper gebruiken met Oracle-opgeslagen procedures die cursors retourneren

  3. Plezier met de nieuwe Postgres-functies van Django

  4. PostgreSQL Connection Pooling:Deel 4 – PgBouncer vs. Pgpool-II