Autor Téma: Zostavenie CASE  (Přečteno 240 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7364
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Zostavenie CASE
« kdy: 17-10-2023, 21:27:11 »

Mám takéto výsledky
Kód: [Vybrat]
      T1    T2   Date      Rematch   G1  G2  HomeT
19   517    39   1.1.2006    FALSE   3   0   517
1   3155   517   6.7.2006    TRUE    0   3   517
2   3158   517   16.7.2006   TRUE    0   1   517
3   1154   517   11.7.2006   TRUE    3   0   517
4   1041   517   31.7.2006   TRUE    0   3   517
5   1262   517   19.9.2006   TRUE    1   4   517
6   1270   517   26.7.2006   TRUE    2   0   517
7   3157   517   15.8.2006   TRUE    0   0   517
8    402   517   10.8.2006   TRUE    0   2   517
9   3160   517   5.8.2006    TRUE    1   2   517
10  3161   517   4.9.2006    TRUE    4   0   517
11   978   517   30.8.2006   TRUE    3   1   517
12   781   517   24.9.2006   TRUE    2   3   517
13  3153   517   14.9.2006   TRUE    2   3   517
14  3159   517   9.9.2006    TRUE    2   0   517
15   376   517   20.8.2006   TRUE    2   4   517
16   458   517   21.7.2006   TRUE    1   2   517
17   914   517   29.9.2006   TRUE    1   2   517
18  2361   517   25.8.2006   TRUE    2   2   517
19    39   517   1.7.2006    TRUE    3   0   517
T1 - Team1, T2 - Team2, G1 a G2 góly, HomeT - domáce družstvo.
Hodnota S.POINTSWON = 3
Kód: [Vybrat]
//    Home1 = ' M.TEAM1FK = TM.HOMETEAM ';
//    T1 = ' M.TEAM1FK = TM.TEAMFK AND M.TEAM1FK = TM.HOMETEAM ';
//    T2 = ' M.TEAM2FK = TM.TEAMFK AND M.TEAM2FK = TM.HOMETEAM ';
  Result :=
  ' CASE'+
    ' WHEN' + Home1 + 'AND ((' + T1 + 'AND M.GOAL1 > M.GOAL2) OR (' + T2 + 'AND M.GOAL1 < M.GOAL2)) THEN S.POINTSWON'+
Potrebujem spočítať body pre domáce družstvo. Dostanem hodnotu 47. To sú riadky 1 - 19. Potrebujem tam mať 50. Neviem tam dostať aj prvý riadok 19. Podľa mojej analýzy sú  podmienky pre všetky riadky rovnaké. FB si to zjavne nemyslí :'(  Je tam v "rezerve" REMATCH, ale nevidím, ako by som to mohol zúžitkovať.
Všetky moje pokusy skončili totálnymi nezmyslami.
Win11 64b, Delphi 11.3.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7364
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Zostavenie CASE
« Odpověď #1 kdy: 17-10-2023, 21:53:20 »
Malá oprava. Kašlite na body. Moje riešenie mi vráti 11 víťazstiev. Ale je ich tam 12!
Win11 64b, Delphi 11.3.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7364
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Zostavenie CASE
« Odpověď #2 kdy: 18-10-2023, 15:59:18 »
Už som to našiel
Kód: [Vybrat]
CASE WHEN (M.TEAM1FK = TM.TEAMFK AND TM.TEAMFK = M.HOMETEAM AND M.GOAL1 > M.GOAL2) OR (M.TEAM2FK = TM.TEAMFK AND M.TEAM2FK = M.HOMETEAM AND M.GOAL1 < M.GOAL2) THEN 1 ELSE 0 END AS WFViď M.HOMETEAM
Win11 64b, Delphi 11.3.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.