UPDATE Client SET DayBetweenFirstAcceptSoldDate = CASE WHEN ....WHEN ... WHEN ... THEN ... ELSE 0 END FROM Client LEFT JOIN BusinessTime ON .... LEFT JOIN Company ON .... LEFT JOIN Research ON ....This will give the optimizer a chance to get you the best performance possible.
>UPDATE Client > SET DayBetweenFirstAcceptSoldDate= > CASE > WHEN Client.FirstAcceptDate>'1899-12-30 00:00:00.000' AND > Client.QueryDate>'1899-12-30 00:00:00.000' AND > Client.QueryDate>=Client.FirstAcceptDate AND > (Client.NoCompany>0 OR Client.NoResearch>0) THEN > (SELECT COALESCE(SUM(Temp.[Second])/3600.0/8,0) > FROM (SELECT DATEDIFF(SECOND, > CASE WHEN BusinessTime.Start>Client.FirstAcceptDate THEN BusinessTime.Start ELSE Client.FirstAcceptDate END, > CASE WHEN BusinessTime.[End]<Client.QueryDate THEN BusinessTime.[End] ELSE Client.QueryDate END) AS [Second] > FROM BusinessTime > WHERE BusinessTime.NoProvince= > (SELECT COALESCE((SELECT Company.NoProvince FROM Company WHERE Company.NoCountry=1 AND Company.Numero=Client.NoCompany),84)) > BusinessTime.NoHoliday=0 AND > BusinessTime.Start<Client.QueryDate AND > BusinessTime.[End]>=Client.FirstAcceptDate) Temp) > ELSE 0 > END >>
>UPDATE Client > SET DayBetweenFirstAcceptSoldDate= > CASE > WHEN Client.FirstAcceptDate>'1899-12-30 00:00:00.000' AND > Client.QueryDate>'1899-12-30 00:00:00.000' AND > Client.QueryDate>=Client.FirstAcceptDate AND > (Client.NoCompany>0 OR Client.NoResearch>0) THEN > (SELECT COALESCE(SUM(Temp.[Second])/3600.0/8,0) > FROM (SELECT DATEDIFF(SECOND, > CASE WHEN BusinessTime.Start>Client.FirstAcceptDate THEN BusinessTime.Start ELSE Client.FirstAcceptDate END, > CASE WHEN BusinessTime.[End]<Client.QueryDate THEN BusinessTime.[End] ELSE Client.QueryDate END) AS [Second] > FROM BusinessTime > WHERE BusinessTime.NoProvince= > CASE > WHEN Client.NoCompany>0 THEN > (SELECT COALESCE((SELECT Company.NoProvince FROM Company WHERE Company.NoCountry=1 AND Company.Numero=Client.NoCompany),84)) > ELSE > (SELECT COALESCE((SELECT Research.NoProvince FROM Research WHERE Research.NoCountry=1 AND Research.Numero=Client.NoResearch),84)) > END AND > BusinessTime.NoHoliday=0 AND > BusinessTime.Start<Client.QueryDate AND > BusinessTime.[End]>=Client.FirstAcceptDate) Temp) > ELSE 0 > END >>