Вы могли бы сделать что-то вроде этого
UPDATE b
SET IsApproved = 1
, ProcessDate = GETDATE()
, clientid = a.ClientID
, program = a.Description
, startdate = a.startdate
, enddate = a.enddate
FROM baycare_homecare b
JOIN (
SELECT c.socialsecuritynumber, c.ClientID, program = cp1.Description, startdate = cp.startdate, enddate = cp.enddate
FROM carescope_live.dbo.client AS c
JOIN carescope_live.dbo.client_program AS cp ON c.ulink = cp.clientulink
LEFT JOIN carescope_live.dbo.Code_Program AS cp1 ON cp1.ULink = cp.ProgramULink
WHERE baycare_homecare.service_date BETWEEN DATEADD(ss, 1, DATEADD(d, -1, cp.startdate)) AND DATEADD(ss, -1, DATEADD(d, +1, cp.enddate))
) a ON a.socialsecuritynumber = b.patient_ssn
WHERE b.ProcessDate IS NULL
Обновлен запрос:
UPDATE b
SET IsApproved = 1
, ProcessDate = GETDATE()
, clientid = a.ClientID
, program = a.Description
, startdate = a.startdate
, enddate = a.enddate
FROM baycare_homecare b
JOIN (
SELECT c.socialsecuritynumber, c.ClientID, program = cp1.Description, startdate = cp.startdate, enddate = cp.enddate
FROM carescope_live.dbo.client AS c
JOIN carescope_live.dbo.client_program AS cp ON c.ulink = cp.clientulink
LEFT JOIN carescope_live.dbo.Code_Program AS cp1 ON cp1.ULink = cp.ProgramULink
) a ON a.socialsecuritynumber = b.patient_ssn AND b.service_date BETWEEN DATEADD(ss, 1, DATEADD(d, -1, a.startdate)) AND DATEADD(ss, -1, DATEADD(d, +1, a.enddate))
WHERE b.ProcessDate IS NULL