sql server - Subtracting values based on date SQL -


i have data looks many more index names , index values

dt                     indx_nm      indx_val 2013-08-13 00:00:00.000 abqi        1571.93 2013-08-12 00:00:00.000 abqi        1568.55 2013-08-09 00:00:00.000 abqi        1566.1 2013-08-08 00:00:00.000 abqi        1573.98 2013-08-07 00:00:00.000 abqi        1567.42 2013-08-06 00:00:00.000 abqi        1579.49 2013-08-13 00:00:00.000 acnactr     280.3931 2013-08-12 00:00:00.000 acnactr     275.1943 2013-08-09 00:00:00.000 acnactr     268.8868 2013-08-08 00:00:00.000 acnactr     265.7915 2013-08-07 00:00:00.000 acnactr     264.8321 2013-08-13 00:00:00.000 acnittr     145.3845 2013-08-12 00:00:00.000 acnittr     144.1252 2013-08-09 00:00:00.000 acnittr     143.2331 2013-08-08 00:00:00.000 acnittr     141.4968 2013-08-07 00:00:00.000 acnittr     140.6079 

how write sql query in order subtract indx_val indx_val of previous date dates. find daily returns essentially. example abqi 1571.93 - 1568.55 return date 2012-08-13 , forth. result have dt column, indx_nm column, , dly_rtn column. thank you!

try following:

;with cte (     select dt, indx_nm, indx_val,         rn = row_number() on (partition indx_nm order dt desc)     tablename ) select c1.dt, c1.indx_nm, c1.indx_val - c2.indx_val dly_rtn cte c1     left join cte c2 on c2.rn = c1.rn + 1 , c2.indx_nm = c1.indx_nm order c1.indx_nm, c1.dt desc 

also, if query supposed run quite frequently, recommend having index:

create unique index ix_tablename_1     on tablename (indx_nm, dt desc) include (indx_val) 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -