2017-01-06 6 views
0

私はtran_dtが> =キャスト( '2016年12月31日transaction_table
からtot_amtとして合計(tran_amt)、SQL/Teradataでマクロ変数を作成するには?

がuser_idを選択し、それはすべての3日間、各ユーザーIDの取引金額を集計し、 を単純なクエリを書きました「)日付など - INTERVAL 『2』 DAY とtran_dt < =」2016年12月31' 日

私は12月1日から12月31日に、月間3日間集計取引金額を計算します。私はSASでそれを行う方法を知っています。日付 '2016-12-31'をマクロ変数、例えば& tera_dtに置き換えてください。

%do i = 1%~31;

コールsymput( 'tera_dt'、 "'" 日 ' '1Jan2017'd、||(intnx(置く' - 。&私は、' B ')、yymmdd10に)|| "'")

しかし、この日付マクロ変数をTeradataでどのように作成できますか?ありがとうございました!


それとも別の方法でそれを入れて、どのようにTeradataの中の変数のリストを作成するには?私はtera_dtと呼ばれるマクロ変数を作成したい、この変数には'2016-10-01 'から'2016-10-31'の合計31の日付が含まれています。このマクロ変数tera_dtに対してクエリを実行します。ありがとう!

答えて

1

この問題のコード生成は必要ありません。システムビューsys_calendar.calendarに対してクエリを結合することができます。このようなもの:

select a.user_id 
    , b.calendar_date as date 
    , sum(a.tran_amt) as tot_amt 
from transaction_table a 
inner join 
    (select calendar_date from sys_calendar.calendar 
    where year_of_calendar=2016 and month_of_year=12) b 
on a.tran_dt>=b.calendar_date - INTERVAL '2' DAY 
    and a.tran_dt<=b.calendar_date 
group by 1,2 
+0

ブリリアント!非常にありがとう、それは働いた! – user3716379

関連する問題