0

如何让 sql 识别我的支付期?我有一个表,其中包含支付周期 ID 列表,每年 26 个。2012的最后一个支付周期是201226,2013的第一个支付周期是201301,我有没有办法让sql计算201226 + 1 = 201301,201226 + 2 = 201302?

4

2 回答 2

0

如果您想保留当前的设计,您可以简单地添加另一个字段,它是一个递增的序列号。使用序列号和当前字段的组合,您可以到达下一个或上一个支付期

于 2013-02-14T01:44:59.690 回答
0

像这样的东西应该适合你。我包括了 2 个额外的字段YearPeriod以防您需要它们:

WITH CTE AS (
  SELECT 
    PayPeriodId,
    ROW_NUMBER() OVER (ORDER BY PayPeriodId) RN,
    Left(PayPeriodId, 4) as Year, 
    Right(PayPeriodId, 2) as Period 
  FROM PayPeriods
  ) 
SELECT NextPeriod.PayPeriodId
FROM CTE CurrentPeriod
  JOIN CTE NextPeriod ON CurrentPeriod.RN + 1 = NextPeriod.RN
WHERE CurrentPeriod.PayPeriodId = '201226'

这是一些Fiddle示例。

于 2013-02-14T02:03:11.570 回答