2016-08-11 14 views
1

こんにちは皆を合計するために特定の列の次の2行を追加 -のTeradata:フィールドがnullでない場合、

ID   TOTAL   QTY 
111   NULL   100 
112   NULL   150 
113   312.00   70 
114   NULL   200 
115   14.00   40 
116   NULL   70 
117   NULL   100 
118   NULL   170 

私は比較的Teradataのを使用して、複雑なものを把握しようとしています。上記のデータでは、THREEDAYという新しい列を作成したいと考えています。 TOTALがNULLの場合、THREEDAYをQTYの量と同じにします。 TOTALがNULLでない場合は、TOTALをQTY に加え、の量と同じにして、次の2行分の量を指定します。例えば:ID 113について

ID   TOTAL   QTY   THREEDAY 
111   NULL   100   100 
112   NULL   150   150 
113   312.00   70   310 
114   NULL   200   200 
115   14.00   40   210 
116   NULL   70   70 
117   NULL   100   100 
118   NULL   170   170   

は、THREEDAYにおける量は310(70 + 200 + 40)であり、そしてID 115のため、量は210(40 + 70 + 100)です。残りのIDでは、TOTALの値がないため、THREEDAYの量はQTYになります。

私のスキルはこの種の問題に取り組むためには上手くいかないので、どんな支援も素晴らしいでしょう。ありがとう!

+0

あなたがこれまでにしようとしているものを私たちと共有してください適切なヘルプを得るために。 –

答えて

0

ウィンドウ機能sum()を使用してこれを行うことができます。この解決策では、注文はid列に基づいています。 (このソリューションは、私はそれはそれは構文の変更が必要になるしない場合、これは、あまりにもTeradataのに働くだろうと仮定します。SQL Serverで動作します)

select id,total,quantity, 
case when total is null then quantity 
else sum(coalesce(quantity,0)) over(order by id rows between current row and 2 following) 
end threeday 
from tablename 

Sample example

関連する問題