2017-07-17 4 views
-2

私は、Tradesというテーブルにデータをロードしました。今私はこのテーブルを照会し、特定の条件を満たす要素を見つけて、トレード値の量を生成する必要があります。 ここ要件であるSQL - リストをループし、SQLのselect文を使って変数に追加する

TradeAmt = 0 
Loop for all Trades 
{IF TradeId is 35 
    If type = 'I' 
    ADD (TradeAmt =TradeAmt + col_TradeAmt) 
else 
    ADD (TradeAmt = TradeAmt + col_TradeAmtOverlap) 
END-IF} 
Return TradeAmt 

データ: 行1:tradeid = 35、タイプ= I、col_TradeAmt = 10、col_TradeAmtOverlap = 20

行2:tradeid = 35、種別= S、col_TradeAmt = 30、 col_TradeAmtOverlap = 40

出力:TradeAmt = 50

私は、このSQL文を使って書くことができますどのように。

+2

どのSQLデータベース?サンプルデータと期待される出力を投稿する場合にも役立ちます。あなたの解はOPから理解できるものとは異なるかもしれません – maSTAShuFu

+0

id = 35の複数の取引がありますか? –

+1

あなたは正確に何をしようとしていますか?あなたが望むものははっきりしない。これは「質問する方法」の良いガイドです。 https://stackoverflow.com/help/how-to-ask – Eric

答えて

1

SQLでは、実際にはシーケンスをループしません。 データセット(Tradesテーブルなど)から取得する内容を記述したステートメントを作成します。

あなたの場合、いくつかの方法ですべての要素を累積し、結果としてその累積を提供したい場合は、SUMのような集計関数を使用して行うことができます。

これらの行に沿って何かが動作する可能性があります。ここでは、2つのクエリを入れ子にしています。内の1つは、取引のタイプに応じて累積する「金額」として扱う列を決定します。また、Id 35の取引のみをフィルタリングします。総額の総計:

SELECT SUM("Amount") FROM 
(SELECT 
CASE 
    WHEN Type = 'I' THEN col_TradeAmt 
    ELSE col_TradeAmtOverlap 
END "Amount" 
FROM Trades 
WHERE TradeId = 35) "TradeAmt"; 
+0

ありがとう!これはうまくいった! – codeJam

+1

またはより簡単に 'SELECT SUM(タイプ= '私は' col_TradeAmt ELSE col_TradeAmtOverlapの終わり)から売買するWhere TradeId = 35' – philipxy

関連する問題