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

  • #65304576

    törölt tag

    válasz martonx #884 üzenetére

    Egy trükk Oracle-hez, máshol nem valószínű, hogy működik:

    Az alapprobléma az, hogy tulajdonképpen egy folyamatos sorszám halmazt kellene előállítanunk, ami 1-től indul és valameddig tart. Naptár esetén értelemszerűen napokkal, de bármire jó lenne egy ilyen.
    Nos, ezt így kell megoldani:

    SELECT LEVEL cnt FROM dual CONNECT BY LEVEL <= 100;

    Ez visszaad egy táblát, amelyben minden rekord egymás után következik és csak sorszám (konkrétan 1-től 100-ig). Ha ezt összekötjük azzal, hogy Oracle-ben (is) a dátumtípus és a numerikus értékek között lehetségesek műveletek és az 1 (egy) pontosan egy napot jelent, már készen is van egy táblánk, ami tetszőleges dátumsort képes megjeleníteni. A tábla csak a memóriában létezik, nem kell tárolni, nagyon gyorsan képezhető, beágyazható, kaphat alias-t, stb., mindent lehet vele csinálni. Pl.:

    select
    days.next_days,
    to_char(days.next_days, 'DAY') name_of_day,
    to_char(days.next_days, 'D') day_of_week
    from
    (SELECT trunc(sysdate) + LEVEL next_days
    FROM dual CONNECT BY LEVEL <= 7) days;

    Kisebb intervallumokra sokkal gyorsabb megoldás, mint a több táblás join. :)

    [ Szerkesztve ]

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