2016-10-14 6 views
1

正常に動作しているストアドプロシージャを記述しました。私はfd.benefitscontributionsの平均を計算したいのですが、これはAVG(fd.benefitscontributions)として行うことができます。ストアドプロシージャの挿入値(if else条件を使用)

結果が50より大きい場合は、if_funddetailsテーブルのstatusカラムに「good」以外の「bad」を挿入します。 if_funddetailsは4列現在、私は3列の値が、前後の列を挿入していますがあり、すなわち、status値はfd.benefitscontributions

INSERT INTO if_funddetails (d.fundcode, d.fundname, fd.benefitscontributions) 
    SELECT DISTINCT d.fundcode, d.fundname, fd.benefitscontributions 
    FROM dbo.ws_funddetail AS d 
     LEFT OUTER JOIN dbo.v_fundnooutofpocket AS nop 
         ON d.funddetailid = nop.funddetailid 
     INNER JOIN dbo.ws_funddata AS fd 
       ON nop.fundreportid = fd.fundreportid 

の平均に基づいている私は、平均値を得ることができますが、 '「良い」または値を追加する方法ステータス列に「悪い」とは分かりません。どんな助けもありがとう。あなたのAVG機能付き

+0

平均値の使用例文 –

答えて

1

するTry Caseステートメント、あなたがAVGを得たとして、すでに

CASE WHEN AVG(FieldName)>50 THEN 'Good' ELSE 'Bad' END AS 'Status' 

注:は集約関数を使用するには、グループの他の列に持って

0

に使用されるこの..ケースを試してみてくださいstaus

INSERT INTO IF_FUNDDETAILS (D.FUNDCODE, D.FUNDNAME, STATUS) 
    SELECT DISTINCT D.FUNDCODE, D.FUNDNAME, CASE WHEN AVG(FD.BENEFITSCONTRIBUTIONS)>50 THEN 'GOOD' ELSE 'BAD' END AS STATUS 
    FROM DBO.WS_FUNDDETAIL AS D 
    LEFT OUTER JOIN DBO.V_FUNDNOOUTOFPOCKET AS NOP ON D.FUNDDETAILID = NOP.FUNDDETAILID 
    INNER JOIN DBO.WS_FUNDDATA AS FD ON NOP.FUNDREPORTID = FD.FUNDREPORTID 
    GROUP BY D.FUNDCODE, D.FUNDNAME 
0

使用

を知っています
+0

「IFF」はSQL Server 2012+です。タグには[タグ:sql-server-2008] –

関連する問題