支付期是每两周分组一次

时间:2013-02-14 00:22:32

标签: sql datetime

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

2 个答案:

答案 0 :(得分:0)

如果您想保留当前的设计,只需添加另一个字段即增量序列号。使用序列号和当前字段的组合,您可以达到下一个或上一个支付期

答案 1 :(得分: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