0
我正在嘗試編寫一個基於employeeID(每個employeeID不同範圍)的特定日期範圍的Oracle SQL查詢,然後爲每個員工在該日期範圍內的特定績效指標數字求和。根據我的選擇,我似乎對同一個employeeID的結果不一致。這是我的查詢:Oracle SQL - 不一致的查詢結果
select c.employeeID, b.assessmentDate, c.startDate, c.endDate,
sum(case when employeeProductivityMetric='15' then 1 else 0 end) as Metric1,
sum(case when employeeProductivityMetric='20' then 1 else 0 end) as Metric2
from assessmentTable b
inner join performanceMetricTable c on b.badgeID = c.badgeID
where b.assessmentDate between c.startDate and c.endDate
group by c.employeeID, b.assessmentDate, c.startDate, c.endDate
order by c.employeeID, b.assessmentDate;
請注意,給定的employeeID可以與多個badgeID關聯。
當我選擇一個特定的僱員(比如2)通過添加以下where子句:
where c.employeeID=2
我得到一些特別的號碼Metric1和Metric2:
employeeID assessmentDate startDate endDate Metric1 Metric2
2 02-Jul-15 01-Jul-15 31-Jul-15 4 5
然而,當我做
where c.employeeID between 1 and 3
我得到不同的員工2號碼,如:
employeeID assessmentDate startDate endDate Metric1 Metric2
2 02-Jul-15 01-Jul-15 31-Jul-15 3 0
有沒有人知道爲什麼會這樣?我的查詢設計有問題嗎?
謝謝你的指點!
納塔利婭
有沒有可能將'badgeID'鏈接到多個'employeeID's? –
您正在通過'employeeId'進行分組。我沒有看到該列上的過濾條件如何影響給定值的行內結果。 –