悪いタイトルで申し訳ありません。私が抱えている問題を一言で説明するのは難しいです。だから私はバスケットボールの統計データベースを持っています。私がやろうとしているのは、1 つのチームの統計を 1 つの行にグループ化し、このチームが対戦したすべての統計を別の行にグループ化することです。データベースに対戦相手の統計がある場合、私が今持っているものは機能しますが、対戦相手の統計を持たずにチームの統計だけを持つことは可能です. 理由を説明するのは難しいので、そのまま進んでください。
したがって、次のような3行があるとしましょう:
COMP_ID | TEAM_ID | OFF_REB | DEF_REB
1 | 100 | 5 | 4
2 | 100 | 1 | 1
3 | 100 | 3 | 7
基本的に3試合あり、チーム100のスタッツしかありません。チーム100のOFFリバウンドとDEFリバウンドをすべて連続で取得し、次に相手チームのOFFリバウンドとDEFリバウンドをすべて別の列で取得したいと考えています。対戦相手のステータスがない場合は、0 だけで問題ありません。
参考までに - 私が今行っているのは、チーム 100 の統計をまとめてパッケージ化し、対戦相手の統計もまとめてパッケージ化するために group by を実行することです。対戦相手の統計の TEAM_ID については、それらが対戦相手の値であることがわかるように、それらを -999 の値にグループ化します。
これが私が今持っているクエリです:
SELECT CASE WHEN TEAM_ID <> 100 THEN -999 ELSE 100 END AS TEAM_ID, SUM(OFF_REB+DEF_REB) REBS
FROM V_STATS_COMP
WHERE COMP_ID IN (SELECT COMP_ID FROM COMPETITIONS WHERE HOME_ID = 100 OR VIS_ID = 100)
GROUP BY CASE WHEN TEAM_ID <> 100 THEN -999 ELSE 100 END
ORDER BY TEAM_ID
このクエリでは、チーム 100 の場合は 1 行しか返されません。使用可能な統計がない場合でも、-999 行を取得するように調整するにはどうすればよいですか?
編集して目的の結果を表示します。
TEAM_ID | REBS
100 | 21
-999 | 0
もちろん、対戦相手の統計がある場合は、REBS 値を確認したいと思います。