COUNT в CASE - PullRequest
       45

COUNT в CASE

0 голосов
/ 19 июня 2020

Кто-нибудь знает, почему это дает ошибку рядом с «FROM»: синтаксическая ошибка?

SELECT voetbal_team_id_a,
CASE
    WHEN (COUNT(omschrijving) FROM gebeurtenis WHERE wedstrijd.voetbal_team_id_a = gebeurtenis.voetbal_team_id AND gebeurtenis.omschrijving = 'goal' AND wedstrijd.wedstrijd_id = gebeurtenis.wedstrijd_id) > 
         (COUNT(omschrijving) FROM gebeurtenis WHERE wedstrijd.voetbal_team_id_b = gebeurtenis.voetbal_team_id AND gebeurtenis.omschrijving = 'goal' AND wedstrijd.wedstrijd_id = gebeurtenis.wedstrijd_id) THEN 3
    ELSE 0
END AS wins
FROM wedstrijd

INNER JOIN gebeurtenis
ON wedstrijd.wedstrijd_id = gebeurtenis.wedstrijd_id

Я хочу создать это:

example

Но я не уверен, как работает CASE, когда вы используете COUNT.


Сам COUNT должен работать, это еще один мой запрос:

SELECT wedstrijd.wedstrijd_id,
        (SELECT COUNT(omschrijving) FROM gebeurtenis WHERE wedstrijd.voetbal_team_id_a = gebeurtenis.voetbal_team_id AND gebeurtenis.omschrijving = 'goal' AND wedstrijd_id = wedstrijd.wedstrijd_id) AS Goals_A,
        (SELECT COUNT(omschrijving) FROM gebeurtenis WHERE wedstrijd.voetbal_team_id_b = gebeurtenis.voetbal_team_id AND gebeurtenis.omschrijving = 'goal' AND wedstrijd_id = wedstrijd.wedstrijd_id) AS Goals_B
FROM gebeurtenis
INNER JOIN wedstrijd
ON gebeurtenis.wedstrijd_id = wedstrijd.wedstrijd_id
GROUP BY wedstrijd.wedstrijd_id

Это дает следующее:

enter image description here

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Я хочу создать это

SELECT hometeam AS team, homescore > awayscore AS wins
FROM matches

даст показанный результат. CASE вообще не нужен.

0 голосов
/ 19 июня 2020

case ... from недействительно SQL.

Вы можете делать все, что хотите, с помощью union all и агрегирования:

select team, sum(win) win
from (
    select hometeam teamp, (homescore > awayscore) win from matches
    union all select awayteam, (homescore < awayscore) from matches
) t
group by team
...