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

  • updog

    senior tag

    Sziasztok,

    Félig SQL, félig logikai dilemmám lenne: minden hétköznap(!) este érkezik hozzánk a megrendeléseket tartalmazó adatfile, amit rámergelünk az előző adatokra.

    Betöltés után kell generálnunk egy kimeneti fájlt. A trükk az, hogy amíg a megrendelés státusza nem végleges (legyen mondjuk 0), addig minden nap újra meg újra ki kell tennünk a fájlba, akkor is ha aznap nem módosult, de ha aznap váltott 0-ra, akkor aznap kell még exportálni, de utána többször nem.

    Egy view-ból generáljuk az adatokat, és ha csak mód van rá, szeretném úgy megoldani, hogy a táblába ne kelljen hozzáadni az "elküldve" vagy hasonló oszlopot, csak a view módosításával viszont nem látom, hogy ezt a "utoljára még elküldöm de többször nem" feltételt hogy írjam meg, ha az utolsó státuszváltás után nem változik a rekord (tehát a feltételnek igaznak kell lennie aznap amikor érkezett, de utána már nem).

    Példa:

    MEGR MEGR_DATUM MOD_DATUM STATUSZ ADAT_ERKEZETT
    ---- ---------- --------- ------- -------------
    1234 20170502 null 1 20170502

    Új megrendelés 2017.05.02-n, betöltés után kimentjük fájlba.

    03-án nem módosul a rekord, de exportáljuk.

    MEGR MEGR_DATUM MOD_DATUM STATUSZ ADAT_ERKEZETT
    ---- ---------- --------- ------- -------------
    1234 20170502 170504 2 20170504

    Státusz módosult, nem végleges státusz, exportáljuk.

    05-én nem módosul, de exportáljuk

    MEGR MEGR_DATUM MOD_DATUM STATUSZ ADAT_ERKEZETT
    ---- ---------- --------- ------- -------------
    1234 20170502 170506 0 20170508

    Státusz módosult (6-án!), amikor megérkezett a módosítás (május 8!) még kigeneráljuk, de 9-én és utána már nem.
    (M)

    Nyilván eddig megvan:

    SELECT * FROM MEGRENDEL WHERE STATUSZ <> 0
    AND ... --itt még van 1-2 business feltétel
    ;

    Ami a triviális megoldás hogy felveszek egy ELKULDVE oszlopot, és küldés után updatelem 1-re, és hozzáadom a feltételt:
    AND NVL(ELKULDVE,0)=0

    De mivel a tábla tisztán business adatokat tartalmaz, nem nagyon tetszene senkinek, ha én ilyen technikai jellegű oszlopot felvennék. Sajnos sysdate-re alapuló feltétel se játszik mert a beérkező fájl jöhet éjfél előtt, után, vagy akár aznap ki is maradhat, akkor másnap kétnapi adat megy be.

    [ Szerkesztve ]

    "Bocs, főnök, de én csak két emberben bízom. Az egyik én vagyok. Nem maga a másik." || "Hóhahó, mégis van graffaló!"

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