Új hozzászólás Aktív témák

  • #65304576

    törölt tag

    válasz lapa #279 üzenetére

    Eltartott egy ideig, mire értelmeztem, de azt hiszem, értem. :) Tehát van egy többé-kevésbé bonyolult képleted (kivonás), amit egy csomó más helyen is használni szeretnél ugyanazon select-en belül, és ezért szeretnéd először kiszámolni, majd a többi oszlopnál is valamiféle változót használni.

    A probléma csak kényelmi és vizuális ("csúnyán néz ki"), performanciára nincs hatása, mert az első kivonás eredménye kvázi konstansként behelyettesítődik majd a többi képletbe is (a parser felismeri az azonos kifejezést).
    Az Oracle-nek egyébként nincs inline változója, bár al-select-ekkel (inline view, vagy with ... as) megoldható a dolog, azzal igen valószínű, hogy csak rosszabbul jársz. :)
    Szóval marad a ctrl+c / ctrl + v. :) (Vagy a pl/sql, de az is lassabb lesz.)

    Ha a kifejezést máshol is használni kellene (pl. where-ben), akkor már esetleg lehet gondolkozni azon, hogy előre kiszámolni és primary key alapján visszakötni a főtáblához, immár egyszerű oszlopként. Pl.:

    with sub_diff as ( select id, end_time - start_time mp_diff
    from table1 where (end_time - start_time) < 5 )
    select d.data1 / t.mp_diff, d.data2 / t.mp_diff, d.data3 / t.mp_diff
    from sub_diff t, table1 d
    where d.id = t.id

    [ Szerkesztve ]

Új hozzászólás Aktív témák