如何使用日期列获取数字列的当前年份和上一年?

时间:2016-03-09 18:42:33

标签: sql-server

如何使用日期列获取数字列的当前年份和上一年?

可用的列是 高级列具有计算/数值。例子是115.20,325,126.29。 日期列。例如03/09 / 2016,12 / 10/2015

Date column   Premium Column
03/09/2016    115.20
12/10/2015    325,126.29

我需要创建2个新列,即当前日期溢价和先前日期溢价。

我需要获得当前日期保费的结果是115.20 并且对于先前的列是325,126.29

Current Date premium   Prior Date premium
115.20                 325,126.29

如果日期部分不允许其他表达式(像Premium Column这样的数字列)获取当前年份,如何为这两个新列应用日期部分功能?

1 个答案:

答案 0 :(得分:0)

如果你有SQL Server 2008及更高版本,你可以尝试如下。您也可以尝试用CTE替换内部查询部分来重构。

<强>逻辑: 内部查询根据日期提供表行的排名,然后我们根据(当前表的排名)=(先前表排名)-1进行自联接

SELECT 
 t1.[Premium Column] as [Current Date Premium],
 t2.[Premium Column] as [Prior Date Premium]
FROM 
 (
  SELECT 
   *, 
    ROW_NUMBER() OVER (ORDER BY [Date column] ASC) AS Ranking 
   FROM Tbl 
  )t1 
LEFT JOIN
(
  SELECT 
   *, 
   ROW_NUMBER() OVER (ORDER BY [Date column] ASC) AS Ranking 
  FROM Tbl 
)t2
 ON t1.Ranking=t2.Ranking-1