0

我在表中有以下列和数据:

PeriodID Days
1        NULL
2        NULL
3        NULL
4        NULL
5        NULL

然后我有几天应该跨行划分如下:

  1. 如果天数 < 5(例如 2),我将拥有:

    PeriodID Days
    1        NULL
    2        NULL
    3        NULL
    4        1
    5        1
    
  2. 如果 days >= 5 并且 days%5=0(例如 5),我将拥有:

    PeriodID Days
    1        1    
    2        1    
    3        1    
    4        1    
    5        1
    
  3. 如果 days > 5 并且 days%5!=0(例如 12)我将拥有:

    PeriodID Days
    1        3    
    2        3    
    3        2    
    4        2    
    5        2
    

我可以通过循环来做到这一点,我希望使用一些智能技术或 T-SQL 函数来获得更好的解决方案。提前致谢。

4

1 回答 1

2

这应该为你做:

DECLARE @numDays int
SET @numDays = 12

UPDATE someTable
SET Days = CASE WHEN @numDays < 5 
                  THEN CASE WHEN @numDays >= 6 - PeriodId THEN 1 ELSE NULL END
                ELSE FLOOR((@numDays + 5 - PeriodId) / 5)
           END
于 2012-11-08T14:34:13.603 回答