T-SQL跨行划分值

时间:2012-11-08 14:19:13

标签: sql-server tsql default-value between divide

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

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

然后我有几天应按如下划分:

  1. 如果Days< 5(例如2)我将:

    PeriodID Days
    1        NULL
    2        NULL
    3        NULL
    4        1
    5        1
    
  2. 如果天数> = 5且天数%5 = 0(例如5),我将会:

    PeriodID Days
    1        1    
    2        1    
    3        1    
    4        1    
    5        1
    
  3. 如果天数> 5和天%5!= 0(例如12)我将:

    PeriodID Days
    1        3    
    2        3    
    3        2    
    4        2    
    5        2
    
  4. 我能用循环来做这件事,我希望使用一些智能技术或T-SQL函数来获得更好的解决方案。提前谢谢。

1 个答案:

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