Обновление из CTE не корректно обновляет все строки таблицы. Но обновляет все существующие строки таблицы с значениями CTE, возвращаемыми в первом идентификаторе в наборе результатов CTE

Я создал CTE и хочу обновить существующую физическую таблицу на основе результатов CTE.

;WITH CTE AS ( Select t.ID As [CTE_ID] ,count(distinct case when e.Department='M' then t.ID else null end) as M_Marketing ,count(distinct case when e.Department='S' then t.ID else null end) as S_Sales ,count(distinct case when e.Department='U' then t.ID else null end) as U_Utilization ,count(distinct case when e.Department=' ' then t.ID else null end) as No_NoDepartment From dbo.Table t (nolock) Left Join dbo.ClearedEmployee ce (nolock) ON t.ID = ce.building_fk Join dbo.Employee e (nolock) ON ce.employee_fk = e.employee_pk Group By t.ID ) Select *, t.ID From CTE c (nolock) FULL JOIN dbo.Table t (nolock) ON t.ID=c.[CTE_ID] Order By t.ID ASC; 

Я хочу обновить существующую таблицу с результатами, созданными КОДОМ ВЫШЕ для каждого идентификатора в CTE. Я использую следующий код:

 UPDATE dbo.Table t SET Marketing=M_Marketing, Sales=S_Sales, Utilization=U_Utilization, NoDepartment=No_NoDepartment FROM CTE 

Но этот код обновляет все строки (все строки с уникальными идентификаторами) столбцов «Маркетинг», «Продажи», «Утилизация» и «Нетдиаферов» со значениями, которые присутствуют в первой строке набора результатов CTE. В основном я не могу использовать CTE true result set для обновления таблицы.

 UPDATE t SET t.Marketing=M_Marketing, t.Sales=S_Sales, t.Utilization=U_Utilization, t.NoDepartment=No_NoDepartment FROM CTE C JOIN Table T ON T.ID=C.CTE_ID 

В своем заявлении о обновлении вам нужно сообщить SQL Server, как сопоставить данные из CTE с данными из таблицы.

  • Часто использование «ОБНОВЛЕНИЯ СТАТИСТИКИ С FULLSCAN» является нормальным?
  • Почему мой оператор alter table неправильно добавляет столбец в мою временную таблицу?
  • Как обновить записи в таблице на основе сравнения с столбцом id из другой таблицы?
  • Cursorfetch: количество переменных, объявленных в списке INTO, должно соответствовать количеству выбранных столбцов
  • Несколько сообщений об успешном завершении из отчета SQL Server Update
  • Как разбить строку после определенного символа в SQL Server и обновить это значение до определенного столбца
  • Entity Framework. Операция UPDATE. Почему сначала записывается дочерняя запись?
  • sql-запрос для обновления узла xml, хранящегося в столбце
  • Как скопировать данные из каждой записи одной таблицы в несколько записей другой таблицы, связанных с первой таблицей?
  • Обновление не дает правильных результатов
  • SQL Условный UPDATE На основе SELECT
  • Давайте будем гением компьютера.