带内联、分组和中间的TSQL更新
我想从当前日期和原始日期之间的最早开始日期更新日期。我的问题是:带内联、分组和中间的TSQL更新,tsql,Tsql,我想从当前日期和原始日期之间的最早开始日期更新日期。我的问题是: update TableA set [Stop_Date] =DATA.Min_Start FROM TableA JOiN (select min(TableB.START_DTTM ) as Min_Start from TableB where TableB.CancelReason ='Treatment' AN
update TableA
set [Stop_Date] =DATA.Min_Start
FROM TableA
JOiN
(select min(TableB.START_DTTM ) as Min_Start
from TableB
where
TableB.CancelReason ='Treatment' AND
TableA.Start_Date>=TableB.START_DTTM AND
TableB.START_DTTM '< GETDATE()
) DATA
ON TableA.Ref_No=TableB.REFRL_REFNO
where
[Stop_Date] is null
您的条件
TableA.Start\u Date>=TableB.Start\u DTTM和TableB.Start\u DTTM'
是错误的。这将表B的值限制为开始日期之前和小于当前日期的值,而不是介于两者之间的值
下面的方法似乎有效
UPDATE TableA
SET Stop_Date =
(
SELECT MIN(TableB.START_DTTM)
FROM TableB
WHERE
TableA.Ref_No = TableB.REFRL_REFNO
AND (TableB.CancelReason = 'Treatment')
AND (TableB.START_DTTM BETWEEN TableA.[Start_Date] AND GETDATE())
)
WHERE (TableA.Stop_Date IS NULL)
您的条件
TableA.Start\u Date>=TableB.Start\u DTTM和TableB.Start\u DTTM'
是错误的。这将表B的值限制为开始日期之前和小于当前日期的值,而不是介于两者之间的值
下面的方法似乎有效
UPDATE TableA
SET Stop_Date =
(
SELECT MIN(TableB.START_DTTM)
FROM TableB
WHERE
TableA.Ref_No = TableB.REFRL_REFNO
AND (TableB.CancelReason = 'Treatment')
AND (TableB.START_DTTM BETWEEN TableA.[Start_Date] AND GETDATE())
)
WHERE (TableA.Stop_Date IS NULL)
。。。和TableB.START\u DTTM)
-这看起来不像是一个完整的表达式。对不起,“。。。和TableB.START\u DTTM)
-这看起来不像是一个完整的表达式。抱歉,这个