列[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
这是我到目前为止所尝试的,显然是错误的。
目标是得到如下内容:
<表类>TNET SORTCODE LOADDATE TRAN_YRMO 年 月 MAX年 tbody><<tr>202304 2023 04 2023 202301 2023 01 2023 202208 2022 08年 2023 202107 2021 07 2023 表类>
只是使用窗口函数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)