2016-07-18 17 views
0

良い一日参加使って表内のIDで複数の列の合計を取得します。 テーブルAとテーブルBの2つのテーブルがあるとします。テーブルAにはStaffId列があり、テーブルBにはStaffIdもあります。表Bは、StaffIdの外部キーで複数のコスト値を持つことができます。私がしようとしているのは、同じStaffIdを持つ表Bの中のすべての合計値を取得することです。SQLクエリは - 私はデータグリッドビューの内側に投げることができるクエリを作成してい</p> <p>、インナー

サンプルテーブルの定義と内容は次のとおりです。

// Table A 
| StaffId | Name | 
| 1 | Dummmy | 

// Table B 
| Id | StaffId | Cost | 
| 1  | 1 | 10.00 | 
| 2  | 1 | 10.00 | 
| 3  | 1 | 10.00 | 

私はすでにこのクエリを試しましたが、正しい答えを得ることができません。

SELECT A.Name, Sum(B.Cost) FROM B INNER JOIN A ON A.StaffId=B.StaffId 

答えは、この

Dummy | 30.00 

ようにする必要がありますが、私のクエリは動作しません。どのようにしてテーブルBのすべてのコストの価値を得ることができますか?

ご協力いただければ幸いです。前もって感謝します。

+0

誰もが 'GROUP BY'が' SQL Server'、表A、表Bの 'SUM'集約関数であり、セットキロを圧縮する場合にのみ動作との一致を持つすべての行を返すされている使用している理由行。それは 'GROUP BY'が行セットを一緒に壊したり圧縮したりするためのものです。 –

答えて

1

は、あなたがこれを使用する必要があり一人ひとりStaffId年代のためのコストの合計値を見つけるには、この、

のように試してみてください。

SELECT A.StaffId 
    ,A.NAME 
    ,Sum(B.Cost) as Total 
FROM B 
INNER JOIN A ON A.StaffId = B.StaffId 
GROUP BY A.StaffId 
    ,A.NAME 

すべてのStaffIdの費用を確認するには、これを使用してください。

SELECT Sum(B.Cost) 
FROM B 
INNER JOIN A ON A.StaffId = B.StaffId 
+1

私は 'GROUP BY A.StaffId'を使うべきだと思います。 2人のスタッフが同じ名前を持つことができます。 – 1000111

+0

あなたは正しいです、私はちょうど今投稿を編集しました。あなたの提案をありがとう。 – StackUser

+0

もう一度、私は 'GROUP BY A.StaffId'で十分だと思います。 'StaffId'は単独でスタッフを一意に識別できるので、 – 1000111

関連する問題