2016-03-28 17 views
0

AmountDayOfMonth numaralı sütuna sahip Zaman tablosum var, burada değerler NULL. Bu sütunu güncellemem ve her ay için gün sayısını eklemem gerekiyor. İşte Şubat için sadece benim güncelleme:güncelleştirme ifadesindeki sayım

update [Mart].[dbo].[Time] 
set AmountDayOfMonth = (
    select (count(theMonth)) as kol1 
    from [Mart].[dbo].[Time] as t1 
    where t1.NameMonth = 'February' group by t1.TheYear 
) 
+0

MS SQL Server 2014 – Andrey

+1

Sorunuzun anladığımdan emin değilim. sorunuzu, bazı örnek verileri ve istenen çıktıyı içerecek şekilde düzenleyebilir misiniz? –

cevap

0

Soruya belirtmedi ama o aydaki toplam gün sayısı temsil eden bir sütunda bazı takvim tablo var sanırım. Sadece ikinci kısma ihtiyacınız olacak. Sadece tablo ve sütun adlarını uygun değerlere değiştirin.

Veri başlatma: İhtiyacınız

DECLARE @Time TABLE 
    (
     TheYear INT , 
     MonthNumber VARCHAR(MAX) , 
     DayNumber INT , 
     AmountDayOfMonth INT 
    ); 
WITH cte 
      AS (SELECT CAST('20160101' AS DATE) AS dt 
       UNION ALL 
       SELECT DATEADD(dd, 1, dt) 
       FROM  cte 
       WHERE DATEADD(dd, 1, dt) < '20170101' 
      ) 
    INSERT INTO @Time 
      (TheYear , 
       MonthNumber , 
       DayNumber 
      ) 
      SELECT YEAR(dt) , 
        MONTH(dt) , 
        DAY(dt) 
      FROM cte 
    OPTION (MAXRECURSION 0); 

Güncelleme deyimi:

WITH upd 
      AS (SELECT * , 
         COUNT(*) OVER (PARTITION BY TheYear, MonthNumber) AS cnt 
       FROM  @Time 
      ) 
    UPDATE upd 
    SET  AmountDayOfMonth = cnt 
SELECT * 
FROM @Time