2011-10-18 12 views
1

私は2つのテーブルt_fundsとt_psg2_navを使って作業しています。最近の月の合計値

t_fundsテーブルでは、関連する列がfundnumあるとt_psg2_navで をbr_cd、関連する列return_active_daily、calcdateあり、そしてfundnum

基本的に私は、最新の月のための資金につきreturn_active_dailyを合計し、クエリを必要とします。私はJOIN節を使う必要があると思うが、それは私のためにちょっとしたことだ。ここに私が持っているものがあります...私が使用しているt_fundsテーブルは、fundnumとbr_cd(名前)を切り替えるためのものです...その方が簡単です。

SELECT funds.br_cd AS 'Fund Ticker' 
    , Month(nav.calcdate) AS 'Month' 
    , SUM(nav.return_active_daily) AS 'MTD Tracking' 


FROM dbo.t_psg2_nav AS nav 
    , t_funds AS funds 

INNER JOIN (SELECT fundnum 
        ,month(max(calcdate)) AS calcdate 
      FROM dbo.t_psg2_nav 
      GROUP BY fundnum 
      ) AS nav1 
ON nav.fundnum = nav1.fundnum 
AND nav.calcdate = nav1.calcdate 

WHERE funds.fundnum = nav.fundnum 
AND funds.fund_type LIKE 'ETF' 
+1

おそらくMySQLではなくSQL Serverを使用しています。あなたの質問を正しい情報(タグ)で更新してください。そして、あなたが持っている正確なバージョンは、2000年、2005年、2008年、その他ですか? –

+0

は私がどれだけ知っているかを示しています - タグを更新しました、ありがとうございます。私は完全にどのバージョンであるかはわかりません...私は2005年を推測しています – user1001244

答えて

0

あなたのSQLの末尾にこれを追加します。

HAVING Month=Month(NOW()) 

または、同等;

HAVING Month=Month(SYSDATE()) 

(編集済み)

f.ex.からレコードだけを表示するには3月(月#3):

HAVING Month=3 
+0

'NOW'は認識された組み込み関数名ではありません... – user1001244

+1

'NOW()'を 'SYSDATE()'に置き換えました。 。古いMySQLを使用していますか? – poplitea

+0

@ user1001244助けてくれたら、私の答えをアップしてください(そして私のコメントではありません)。 – poplitea