2017-01-19 6 views
0

私は毎週行われるフットボールの試合の結果を集めたテーブルを持っています。私のSQL:特定の行の後の各行の合計

各ゲームの結果に基づいて、1つのプレイヤーに対して、勝ったか描かれたか、失われたかに応じて、IDで3,1,0ポイントを入力しました。

私はこれらの列を合計できるようにしたいのですが、私は私の問題は、毎週私は、追加の2または3つのゲームの結果を追加することである SELECT SUM(A1+B1+C1+A2+B2+C2) FROM Results WHERE id ='1'

を使用して、手動でそれを行うことができます

id Name A1 B1 C1 A2 B2 C2 

1 C  0 3 1 3 0 0 

2 G  3 0 1 3 0 0 

3 k  3 0 1 0 3 3 

4 S  3 0 1 N N N 

5 G  N N N 3 0 0 

6 D  N N N N N N 

- ので、私新しいゲームを手動でSUM()に追加する必要があります。

私は私は私が名前の後にすべての列の名前を連結して、(concatenatedcolumns)SUMにこれを追加することができます願ってい

SUM(...) AFTER Name WHERE id = 'id'のようなものを使用することができるだろうと思いました。

しかし、私はまだ良い例を見つけていません。

+0

お詫び申し上げましますが、私はテーブルを正しく表示することができません。 – denski

+0

どのDBMSを使用していますか? mysqlはSQL Serverと同じものではありません。 –

+0

また、「N」はヌル値です。 – denski

答えて

0

「ゲーム」メタデータを気にしない場合は、2つのテーブルを持つことができます。ゲームを列として表示する準備ができているとは思いません。

table:players (rows unique by id) 
id name 
1 A 
2 B 

table:scores (rows unique by combination of game_id and player_id) 
game_id, player_id, score 
A1  1   3 
A1  2   1 
B1  1   0 

あなたは、すべてのゲームにわたって各選手のスコアの合計を取得するために、これらの2つのテーブルを結合することができ

select players.id, players.name, sum(scores.score) from players inner join score 
on players.id = scores.player_id group by players.id, players.name 

スコア」でゲームに表示されませんでしたプレーヤーのための任意の行が存在しません。 'テーブルでは、null値を扱う必要はありません。

+0

これは非常に便利です、ありがとうstk。特に役立つのは、私が行う計算の1つとして、ヌル値がないことです(ポイント/ゲームをプレイしたことです)。私は自分の学習のために試してみるつもりだと思う1)この方法と2)Sean Langeが3つのテーブルを使って示唆したように。 – denski

関連する問題