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

Sql server 如何使用日期列获取数字列的当前年份和上一年?,sql-server,Sql Server,如何使用日期列获取数字列的当前年份和上一年 可用列包括 具有计算值/数值的高级列。例如115.20325126.29。 日期列。例如,2016年9月3日、2015年10月12日 Date column Premium Column 03/09/2016 115.20 12/10/2015 325,126.29 我需要创建两个新列,当前日期溢价和以前日期溢价 我需要得到的当前日期保费结果是115.20 前一列为325126.29 Current Date premium Pr

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

可用列包括 具有计算值/数值的高级列。例如115.20325126.29。 日期列。例如,2016年9月3日、2015年10月12日

Date column   Premium Column
03/09/2016    115.20
12/10/2015    325,126.29
我需要创建两个新列,当前日期溢价和以前日期溢价

我需要得到的当前日期保费结果是115.20 前一列为325126.29

Current Date premium   Prior Date premium
115.20                 325,126.29

如果日期部分不允许另一个表达式(数字列,如Premium列)获取当前年份,如何为这两个新列应用日期部分函数?

如果您使用SQL server 2008及更高版本,则可以尝试以下方法。您还可以尝试用CTE替换内部查询部分进行重构

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


我们不能把Premium作为一个表达式放在一个日期函数中吗?或者使用case函数?请发布您刚刚编写的示例代码。我们可以改进这一点,
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