У меня есть запрос, который принимает список идентификаторов супервизора от TableA
и должен найти всех сотрудников, которые отчитываются перед ними, что легко на простое соединение как на уровне одного уровня.Обновление внешнего подсчета из внутреннего запроса
В записи сотрудника у нас есть их Наем.
Мне нужно обновить TableA
с учетом количества людей, которые были там более 1 года и менее 1 года.
IF(DATEDIFF(day,Hiredate,GETDATE())>365)
было бы, как я думаю, мы это сделаем. Просто добавьте 1
к прилавку для каждого за 1 год и 1
к прилавку для каждого под 1 год.
Проблема с этим - я понятия не имею, с чего начать. У меня есть запрос, который присоединяется к таблицам и переходит к списку сотрудников, но не уверен, как структурировать оператор case/update.
SELECT A.[QID], B.[FirstName], B.[LastName], B.[EmpID],
(
SELECT FirstName, LastName, HireDate
FROM dbo.EmpTable
WHERE SupEmpID = B.EmpID
FOR XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root')
-- IF(DATEDIFF(day,Hiredate,GETDATE())>365) add +1 to longTerm var else add +1 to shortTerm var
)
FROM dbo.attritionCounts AS A
JOIN empTable AS B ON A.QID = B.QID
- Это было бы в какой-то тип цикла, который обновляет в менеджере он присоединяется.
- Update TableA SET LONGTERM = бла, бла = краткосрочные, где QID = A.QID
Любые идеи?
Update:
Вот SQLfiddle из примера структуры: http://sqlfiddle.com/#!6/f3a14
с помощью attritionCount
таблицы, мне нужно искать Employees
таблицу и выяснить число людей, доложить attritionCount.QID
, что были здесь более года и менее года
Можете ли вы добавить примеры данных и свой желаемый результат, чтобы уточнить свой вопрос, пожалуйста? – Tanner
мой ответ обновлен, чтобы отобразить тестовые данные sql-скрипта. Хотя это практически не изменилось ... – mrmillsy