我的时间表包含AmountDayOfMonth
列,其值为NULL
。
我需要更新此列并插入每个月的天数。
这是我2月份的更新:
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 :(得分:0)
您没有指定问题,但我猜您有一些日历表,其中的列表示每月的总天数。您只需要第二部分。只需将表名和列名更改为适当的值。
数据初始化:
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 );
您需要的更新声明:
WITH upd
AS ( SELECT * ,
COUNT(*) OVER ( PARTITION BY TheYear, MonthNumber ) AS cnt
FROM @Time
)
UPDATE upd
SET AmountDayOfMonth = cnt
SELECT *
FROM @Time