0

私は 'Price_amount'属性の結果セットの合計を取得しようとしています。 答えは100 + 150 = 250ですが、これを結果セットとして表示するにはどうすればよいですか?これは、これまでのところ、私のクエリです:内部結合後の属性の合計を計算するにはどうすればよいですか?

SELECT * 
FROM tBoard 
INNER JOIN tPrice 
ON tBoard.PriceBand_ID = tPrice.PriceBand_ID 
WHERE Board_start_date BETWEEN '20150101' AND '20150131' 

結果セット:

Board_ID|Board_start_date|Board_end_date|PriceBand_ID|Price_amount 
001  |01-01-2015  |16-01-2015 |1   |100 
002  |01-01-2015  |28-01-2015 |15   |150 

あなたは、ウィンドウ集計関数を使用することができますdetalis見たい場合は、私はSQLサーバ管理STUDIO 2012 Expressの

+4

たぶんSUM( Price_amount)???あなたがここで何をしようとしているのかはまったく明らかではありません。これは始めるのに最適な場所です。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+0

グループ化する必要があり、区別する必要がないため合計が機能しない可能性があります..あなたは 'SUM(Price_amount)OVER()'を試すことができます。しかし、もう一度、単一の列と単一の行を戻したいと思うかもしれません。 – JamieD77

+0

Simple: 'SELECT Board_ID、SUM(Price_amount)AS SumOfPriceAmount from tBoard INNER JOIN tPrice ON tBoard.PriceBand_ID = tPrice.PriceBand_IDここでBoard_start_dateは '20150101' AND '20150131' GROUP BY Board_ID'かなり基本的なSQLです。これをSSMS2012でもグラフィカルに設定することができます。 SQL構文とSSMSプログラムに関するチュートリアルを検索します。 –

答えて

1

を使用しています。

ウィンドウ関数を使用する利点の1つは、グループ化されたクエリとは異なり、ウィンドウクエリはdetaliを非表示にしないことです。彼らはすべての基本的なクエリの行の行を返します。

OVER句を使用すると、関数の行のウィンドウを定義できます。

あなたはこの試すことができます:ちょうどウィンドウ関数を使用し

SELECT *, sum(Price_amount) over(order by Board_ID rows between UNBOUNDED PRECEDING and current row) AS [SUM] 
FROM tBoard 
INNER JOIN tPrice 
ON tBoard.PriceBand_ID = tPrice.PriceBand_ID 
WHERE Board_start_date BETWEEN '20150101' AND '20150131' 

か、句(詳細なし)で、基本的なグループで行うことができます

SELECT Board_ID,Board_start_date,Board_end_date,PriceBand_ID,sum(Price_amount) AS [SUM] 
FROM tBoard 
INNER JOIN tPrice 
ON tBoard.PriceBand_ID = tPrice.PriceBand_ID 
WHERE Board_start_date BETWEEN '20150101' AND '20150131' 
GROUP BY Board_ID,Board_start_date,Board_end_date,PriceBand_ID 
0

を:

SELECT *, SUM(price_amount) OVER() as total_price_amount 
FROM tBoard b INNER JOIN 
    tPrice p 
    ON b.PriceBand_ID = p.PriceBand_ID 
WHERE Board_start_date BETWEEN '20150101' AND '20150131'; 
関連する問題