0

一部のトランザクションの傾向 (上昇または下降の目盛り) を示す SQL を作成する必要があります。

PlayerId と Score を含むこのテーブルを検討してください

PlayerId, Score, Date
1,10,3/13
1,11,3/14
1,12,3/15

3/15 からデータを取得すると、スコアは 12 で、過去のデータと比較して上昇傾向にあります。

私は約10年前にOracle 8iでランクなどの分析関数を使用して同様のことを行いましたが、それは10年前のことです....

結果は次のようになります

PlayerId, Score, Date, Trend
1,12,3/15,UP

SQL azureで同様のことを行うにはどうすればよいですか?

4

1 に答える 1

3

このSQL:

with data as (
  select * from ( values
  (1,11,cast('2013/03/12' as smalldatetime)),
  (1,15,cast('2013/03/13' as smalldatetime)),
  (1,11,cast('2013/03/14' as smalldatetime)),
  (1,12,cast('2013/03/15' as smalldatetime))
  ) data(PlayerId,Score,[Date])
) 
select
  this.*,
  Prev = isnull(prev.Score,0),
  tick = case when this.Score > isnull(prev.Score,0) then 'Up' else 'Down' end
from data this
left join data prev 
    on prev.PlayerId = this.PlayerId
   and prev.[Date]     = this.[Date] - 1

この出力を返します:

PlayerId    Score       Date                    Prev        tick
----------- ----------- ----------------------- ----------- ----
1           11          2013-03-12 00:00:00     0           Up
1           15          2013-03-13 00:00:00     11          Up
1           11          2013-03-14 00:00:00     15          Down
1           12          2013-03-15 00:00:00     11          Up
于 2013-03-16T19:06:58.850 に答える