Sql 将嵌套的Select语句转换为Update语句
这是我当前的select查询。我一直在尝试将最终老化更新为表中的一个字段,但我似乎无法理解。此外,我一直在使用DATEADD手动调整我的时间到UTC,如果有人知道如何重写,我很乐意倾听和学习 我的当前查询日期区分两个日期,并从中删除周末和假日。我只需要更新[最终老化],但我找不到方法。任何帮助都将不胜感激Sql 将嵌套的Select语句转换为Update语句,sql,tsql,sql-update,dynamics-crm-2011,Sql,Tsql,Sql Update,Dynamics Crm 2011,这是我当前的select查询。我一直在尝试将最终老化更新为表中的一个字段,但我似乎无法理解。此外,我一直在使用DATEADD手动调整我的时间到UTC,如果有人知道如何重写,我很乐意倾听和学习 我的当前查询日期区分两个日期,并从中删除周末和假日。我只需要更新[最终老化],但我找不到方法。任何帮助都将不胜感激 SELECT TICKETNUMBER, CONVERT(DATE,CREATEDON), CONVERT(DATE,DATEAPPROVED),
SELECT
TICKETNUMBER,
CONVERT(DATE,CREATEDON),
CONVERT(DATE,DATEAPPROVED),
[WITH WEEKEND],
[WITHOUT WEEKEND],
[HOLIDAY COUNT],
[WITHOUT WEEKEND] - [HOLIDAY COUNT] AS [FINAL AGING]
FROM
(
SELECT
B.TICKETNUMBER,
A.CREATEDON,
DATEAPPROVED,
DATEDIFF(DD, DATEADD(HOUR, 8, A.CREATEDON), DATEADD(HOUR, 8, DATEAPPROVED)) AS [WITH WEEKEND],
DATEDIFF(DD, DATEADD(HOUR, 8, A.CREATEDON), DATEADD(HOUR, 8, DATEAPPROVED)) -
(DATEDIFF(WK, DATEADD(HOUR, 8, A.CREATEDON), DATEADD(HOUR, 8, DATEAPPROVED)) * 2) -
CASE WHEN DATEPART(DW, DATEADD(HOUR, 8, A.CREATEDON)) = 1 THEN 1 ELSE 0 END +
CASE WHEN DATEPART(DW, DATEADD(HOUR, 8, DATEAPPROVED)) = 1 THEN 1 ELSE 0 END AS [WITHOUT WEEKEND],
(SELECT COUNT(DATE) FROM HOLIDAYMAINTENANCE
WHERE CONVERT(DATE, DATEADD(HOUR, 8, DATE)) BETWEEN CONVERT(DATE,DATEADD(HOUR, 8, A.CREATEDON))
AND CONVERT(DATE, DATEADD(HOUR, 8, DATEAPPROVED))) AS [HOLIDAY COUNT]
FROM REQUESTMONITORING A JOIN INCIDENT B ON B.INCIDENTID = A.REQUESTID
WHERE DATEAPPROVED IS NOT NULL
) AS [TABLE]
您将使用join执行更新:
我猜更新的关键是最终老化。此外,您没有提到要更新的表,但您需要将其加入—即使它是要定义toupdate的表。感谢您的快速响应,我有一个关于加入的问题,我是否使用与查询中相同的加入?我需要的字段在REQUESTMONITORING表中。对于新手的问题我很抱歉,但我真的只是把我的select语句放在了with语句中,我想你会把select语句放在with语句中,然后请求监视器更新TableToUpdate。这就解决了问题,非常感谢!我会加上代表你,但这是我的第一篇文章。请不要直接更新Dynamics CRM数据库。Gordon解决方案从SQL方面来说是正确的,但对于Dynamics CRM直接更新,DB不受支持Hi Guido,这是什么意思?
with toupdate as (
<your query here>
)
update
set [Final Aging] = toupdate.[Final Aging]
from TableToUpdate ttu join
toupdate
on ttu.TicketNumber = toupdate.TicketNumber;