SQL kérdések - Szoftverfejlesztés fórum

üzenetek

hozzászólások


#65304576
(csendes tag)

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 ]

üzenetek