SQL将计数值添加到另一个表中
嘿,伙计们,我得到了计算值。 我希望将其作为存储过程运行,以使用从计数中获得的值更新另一个表SQL将计数值添加到另一个表中,sql,sql-server-2008,Sql,Sql Server 2008,嘿,伙计们,我得到了计算值。 我希望将其作为存储过程运行,以使用从计数中获得的值更新另一个表 SELECT COUNT(*) as counted FROM [DB] WHERE Date_Timestamp >= DATEADD(HOUR,6,CONVERT(VARCHAR(10), GETDATE(),110)) AND Date_Timestamp <= DATEADD(HOUR,18,CONVERT(VARCHAR(10), GETDATE()+1,110)) and tr
SELECT COUNT(*) as counted
FROM [DB]
WHERE Date_Timestamp >= DATEADD(HOUR,6,CONVERT(VARCHAR(10), GETDATE(),110))
AND Date_Timestamp <= DATEADD(HOUR,18,CONVERT(VARCHAR(10), GETDATE()+1,110))
and trigger_loc = 'x'
不需要存储过程。我会使用CTE:
WITH newdata as (
SELECT COUNT(*) as counted
FROM [DB]
WHERE Date_Timestamp >= DATEADD(HOUR, 6, CAST(GETDATE() as DATE)) AND
Date_Timestamp <= DATEADD(HOUR, 18 + 24, CAST(GETDATE() as DATE)) AND
trigger_loc = 'x'
)
update toupdate
set col = counted
from t toupdate join
newdata
on toupdate.?? = newdata.??;
这还简化了日期算法,因此不需要转换为字符串
不清楚您要更新哪一行。这假设某个键上有一个联接如果要将其作为存储过程,可以这样做:
CREATE PROCEDURE dbo.UpdateTableWithCountedValue AS
BEGIN
UPDATE [Table You Want To Update]
SET [column you want to update] = (SELECT COUNT(*) as counted
FROM [DB]
WHERE Date_Timestamp >= DATEADD(HOUR, 6, CAST(GETDATE() as DATE)) AND
Date_Timestamp <= DATEADD(HOUR, 18 + 24, CAST(GETDATE() as DATE)) AND
trigger_loc = 'x')
WHERE [ConditionForRowsThatShouldBeUpdated]
END
显示另一个表,前后的样本数据。选择COUNT*作为从[DB]计数,其中Date_Timestamp>=DATEADDHOUR,6,CONVERTVARCHAR10,GETDATE,110和Date_Timestamp我想从我得到的计数中获取数据并将其更新到另一个表
exec dbo.UpdateTableWithCountedValue