SELECT
a1.[employee_number],
a1.[class_id],
a1.[TraineeAddedOn],
a1.[TraineeRemovedOn],
a1.[effective_start_date],
a2.REHIRE
FROM TrainingAnalytics_Staging..VW_FACT_TRAINING_USER_INFO a1
LEFT JOIN DW..[VW_DIM_EMPLOYEE_DETAIL] a2 ON a1.employee_number = a2.employee_number
GROUP BY a1.class_id
HAVING MIN(a1.TraineeAddedOn)
我正在使用此查询,但出现此错误:
在上下文中指定的非布尔类型的表达式,其中 状况可能在')'附近。
答案 0 :(得分:0)
请尝试以下查询
SELECT Top 1 a1.[employee_number], a1.[class_id], a1.[TraineeAddedOn],
a1.[TraineeRemovedOn], a1.[effective_start_date], a2.REHIRE
FROM TrainingAnalytics_Staging..VW_FACT_TRAINING_USER_INFO a1
LEFT JOIN
DW..[VW_DIM_EMPLOYEE_DETAIL] a2
ON a1.employee_number = a2.employee_number
ORDER BY a1.TraineeAddedOn
答案 1 :(得分:0)
基本上,您正在尝试获取每位员工的最低TraineeAddedOn吗? 我认为这样可以:
-- First get list of min date per employee
With MinDatePerEmploye AS
(
SELECT employee_number, MIN(TraineeAddedOn) AS MinTraineeAddedOn
FROM TrainingAnalytics_Staging..VW_FACT_TRAINING_USER_INFO
GROUP BY employee_number
)
-- and now join that up with rest of dataset
SELECT
a1.[employee_number],
a1.MinTraineeAddedOn,
a2.[class_id],
a2.[TraineeAddedOn],
a2.[TraineeRemovedOn],
a2.[effective_start_date],
a2.REHIRE
FROM MinDatePerEmploye a1
INNER JOIN TrainingAnalytics_Staging..VW_FACT_TRAINING_USER_INFO a2
ON a1.employee_number = a2.employee_number AND a1.MinTraineeAddedOn = a2.TraineeAddedOn