3

我有一列日期格式为 201201、201202、201203 等。

这是一个财务数据库,所以有一个周期 13;但是,出于报告目的,将第 12 和 13 期合并。

当最后两个字符为 13 时,如何将它们替换为 12?

我从

SELECT REPLACE(PERIOD, '13', '12')
FROM @b_s_summary

但是,当然,这与 2013 年的年份不符。

感谢所有的建议。

4

5 回答 5

2

在这种情况下,您可以使用 Substring:

SELECT REPLACE(PERIOD, SUBSTRING(PERIOD, len(PERIOD) - 1, 2), '12')
FROM @b_s_summary WHERE PERIOD LIKE '%13'

这是否适合您,或者您是否需要在过去或未来几年采用更具活力的方法?

于 2013-05-22T16:24:14.740 回答
2
declare @Periods as Table ( Period VarChar(6) )
insert into @Periods ( Period ) values
  ( '201212' ), ( '201213' ), ( '201312' ), ( '201313' ) 

select Period, case
  when Right( Period, 2 ) = '13' then Substring( Period, 1, 4 ) + '12'
  else Period end as [AdjustedPeriod]
  from @Period
于 2013-05-22T16:42:46.097 回答
1

同样,可以使用 RIGHT()。

SELECT REPLACE(RIGHT(PERIOD,2),'13','12')
于 2013-05-22T16:41:03.057 回答
1

试试这个:

select (case when right(period, 2) = '13' then left(period, 4) + '12' else period end)

相当标准的 SQL,但某些数据库可能需要substr()orsubstring()而不是right()and left()

于 2013-05-22T16:43:33.750 回答
-1

从@b_s_summary 中选择左侧(期间,LEN(期间)- 2)

于 2020-04-10T14:40:50.860 回答