Member 12605293 Ответов: 1

Недопустимое имя объекта в CTE


Привет,
Я соединяю две разные таблицы и получаю недопустимый объект при соединении со второй таблицей с помощью CTE. Пожалуйста, дайте мне знать, является ли мой способ присоединения правильным.

Что я уже пробовал:

;with t1 as (
SELECT DepId, COUNT(EmpId) AS TotalHeadCount  FROM Emploee          
WHERE (datepart(yyyy,DOJ) between 2005 and 2017) and Status =0
group by DepId
),
t2 as (
SELECT  DepId,COUNT(EmpId) AS NewJoinees FROM Emploee         
WHERE (DATEPART(yyyy, DOJ) = 2017) AND (DATEPART(mm, DOJ)  = 01) and datepart(mm,DOJ)>= 12 and Status = 0
group by DepId
) ,
t3 as (
SELECT  Tobehired AS TOBEHIRED,OpenPosition AS OPENPOSITION,Status FROM Employee1 )        
     
Select t1.DepId, CASE WHEN TotalHeadCount IS NULL THEN '0' ELSE TotalHeadCount END AS TotalHeadCount,CASE WHEN NewJoinees IS NULL THEN '0' 
ELSE NewJoinees END AS NewJoinees,Tobehired,OpenPosition,Status
from t1 full outer join t2 on t1.DepId = t2.DepId
full outer join t3 on t1.DepId = t3.DepId

CHill60

Нам гораздо легче помочь вам, если вы поможете нам ... каковы ваши схемы таблиц, дайте нам некоторые примеры данных и дайте нам полное сообщение об ошибке...пожалуйста!

1 Ответов

Рейтинг:
9

CHill60

Вы не выбираете DepId в CTE t3

[EDIT] как и было запрошено, вот мое предположение о том, каким должен быть измененный запрос. Обратите внимание, что я говорю "Угадай", потому что вы все еще не дали мне достаточно любая информация в виде схем таблиц, выборочных данных или ожидаемых результатов.

;with t1 as (
SELECT DepId, COUNT(EmpId) AS TotalHeadCount  FROM Emploee          
WHERE (datepart(yyyy,DOJ) between 2005 and 2017) and Status =0
group by DepId
),
t2 as (
SELECT  DepId,COUNT(EmpId) AS NewJoinees FROM Emploee         
WHERE (DATEPART(yyyy, DOJ) = 2017) AND (DATEPART(mm, DOJ)  = 01) and datepart(mm,DOJ)>= 12 and Status = 0
group by DepId
) ,
t3 as (
SELECT  Depid, Tobehired AS TOBEHIRED,OpenPosition AS OPENPOSITION,Status FROM Employee1 )        
     
Select t1.DepId, CASE WHEN TotalHeadCount IS NULL THEN '0' ELSE TotalHeadCount END AS TotalHeadCount,CASE WHEN NewJoinees IS NULL THEN '0' 
ELSE NewJoinees END AS NewJoinees,Tobehired,OpenPosition,Status
from t1 full outer join t2 on t1.DepId = t2.DepId
full outer join t3 on t1.DepId = t3.DepId


Member 12605293

Привет Остынь,
Спасибо за Ваш ответ, сэр, можете ли вы изменить мой запрос и отправить мне.