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

  • Jim74
    nagyúr

    Köszi :R és Apollo17hu Neked is.
    Igen ilyen oszlopok vannak. Az a baj, hogy egy meneten belül a fogadások száma eltérő lehet, így nem tudom, hogy hányszor kellene joinolnom, vagy hány extra mezőt kellene képeznem.
    Valamilyen windowed function kéne, ami egy kumulatív sum--ot, vagy sorszámozást képezne egy menet belül, ha az egymást követő fogadások nyerőek, de nullát venne fel, amikor jön egy vesztes fogadás és a következő nyerő fogadásnál egyről indul.
    Ciklust nem szeretnék írni rá, csak worst case, mert nem igazán hatékony szerintem SQL-ben.
    Végső cél, hogy meg tudjam mondani, hogy melyik volt a leghosszabb nyerő szériájú menet.

    Közben szerintem sikerült megoldanom. Úgy gondolom, hogy ez egy roppant buta és favágó megoldás, de működik. NyV a fogadás eredménye (0, vagy 1). A sorszam pedig a fogadás sorszáma. Azért indul 20-ról mert az a max fogadás mennyiség egy meneten belül.

    select menet,
    STRING_AGG(Nyv, '') WITHIN GROUP (ORDER BY menet, sorszam) as Nyv_lista
    from fogadas_tabla
    group by menet
    )
    select top 1 menet,
    case when Nyv_lista like '%11111111111111111111%' then 20
    when Nyv_lista like '%1111111111111111111%' then 19
    when Nyv_lista like '%111111111111111111%' then 18
    when Nyv_lista like '%11111111111111111%' then 17
    when Nyv_lista like '%1111111111111111%' then 16
    when Nyv_lista like '%111111111111111%' then 15
    when Nyv_lista like '%11111111111111%' then 14
    when Nyv_lista like '%1111111111111%' then 13
    when Nyv_lista like '%111111111111%' then 12
    when Nyv_lista like '%11111111111%' then 11
    when Nyv_lista like '%1111111111%' then 10
    when Nyv_lista like '%111111111%' then 9
    when Nyv_lista like '%11111111%' then 8
    else 0 end as Nyero_szeria
    from lek1
    order by case when Nyv_lista like '%11111111111111111111%' then 20
    when Nyv_lista like '%1111111111111111111%' then 19
    when Nyv_lista like '%111111111111111111%' then 18
    when Nyv_lista like '%11111111111111111%' then 17
    when Nyv_lista like '%1111111111111111%' then 16
    when Nyv_lista like '%111111111111111%' then 15
    when Nyv_lista like '%11111111111111%' then 14
    when Nyv_lista like '%1111111111111%' then 13
    when Nyv_lista like '%111111111111%' then 12
    when Nyv_lista like '%11111111111%' then 11
    when Nyv_lista like '%1111111111%' then 10
    when Nyv_lista like '%111111111%' then 9
    when Nyv_lista like '%11111111%' then 8
    else 0 end desc

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