根据事务周期(年、月、年)创建3个新列



[TRAN_YRNO]包含的月/年数据格式为YYYYMM(例如202304)。我试着把它分成两列,一列是月,一列是年。然后,我想创建包含最大年份的第三列。(所有行应该是2023)

SELECT 
[TNET]
,[SORTCODE]    
,[LOADDATE]
,[TRAN_YRMO]
FROM [dbo].[tbl_941_Monthly_Cumulative]
SELECT c.*, c.[year]
from  c
LEFT JOIN b
ON c.[year] = b.[Max Year]
(SELECT
*,
LEFT([TRAN_YRMO],4) as 'Year' ,
RIGHT([TRAN_YRMO],2) as 'Month'
FROM [dbo].[tbl_941_Monthly_Cumulative])c
(SELECT
MAX(a.[year]) AS 'Max Year'
from 
(SELECT *,
LEFT([TRAN_YRMO],4) as 'Year' ,
RIGHT([TRAN_YRMO],2) as 'Month'
FROM [dbo].[tbl_941_Monthly_Cumulative])a)b

这是我到目前为止所尝试的,显然是错误的。

目标是得到如下内容:

<表类>TNETSORTCODELOADDATETRAN_YRMO年月MAX年tbody><<tr>20230420230420232023012023012023202208202208年20232021072021072023

只是使用窗口函数max() over()Cross Apply来计算一次表达式的另一种方法

可选:用convert(int,…)

Select A.*
,B.Year
,B.Month
,MaxYear = max(B.Year) over()
From  YourTable A
Cross Apply ( values ( left([TRAN_YRMO],4),right([TRAN_YRMO],2) ) )B(Year,Month)

最新更新