Sql server 如何使用日期列获取数字列的当前年份和上一年?
如何使用日期列获取数字列的当前年份和上一年 可用列包括 具有计算值/数值的高级列。例如115.20325126.29。 日期列。例如,2016年9月3日、2015年10月12日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
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