0

テーブルに次の列とデータがあります。

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. 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 に答える