2016-09-22 70 views
0

我已經編寫了一個SQL查詢,它爲兩個嵌套SELECT語句中的每一個分配一個別名,並試圖加入這些別名。SELECT語句別名上的對象名稱錯誤無效

我的SQL查詢如下:

SELECT EmpID, 
     (SELECT EmpID 
       ,Count(*) * 8 AS [FullDayHours] 
     FROM [database].[dbo].[tblLogTimes] 
     WHERE ActivityID = 43 
     AND WorkDate BETWEEN '2015-12-31 00:00:00.000' AND '2016-09-30 00:00:00.000' 
     GROUP BY EmpID) AS [Rec1] 
     ,(SELECT EmpID 
       ,(Count(*) * 4) AS [HalfDayHours] 
     FROM [database].[dbo].[tblLogTimes] 
     WHERE ActivityID = 44 
     AND WorkDate BETWEEN '2015-12-31 00:00:00.000' AND '2016-09-30 00:00:00.000' 
     GROUP BY EmpID) AS [Rec2] 
FROM [database].[dbo].[tblLogTimes] E 
INNER JOIN [Rec1] ON E.EmpID = [Rec1].EmpID 
INNER JOIN [Rec2] ON E.EmpID = [Rec2].EmpID 

在查詢嘗試執行,我遇到了一個錯誤:無效的對象名稱REC1「。

我試過查詢組件子狀態的各種安排和配置,但無濟於事。

見解,建議將非常歡迎。 感謝您的期待。

回答

3

我相信這就是你以後,而不是移動的子查詢到join

SELECT EmpID, FullDayHours, HalfDayHours 
FROM [StaffSuite].[dbo].[tblLogTimes] E 
INNER JOIN (SELECT EmpID 
       ,Count(*) * 8 AS [FullDayHours] 
     FROM [StaffSuite].[dbo].[tblLogTimes] 
     WHERE ActivityID = 43 
     AND WorkDate BETWEEN '2015-12-31 00:00:00.000' AND '2016-09-30 00:00:00.000' 
     GROUP BY EmpID) AS [Rec1] ON E.EmpID = [Rec1].EmpID 
INNER JOIN (SELECT EmpID 
       ,(Count(*) * 4) AS [HalfDayHours] 
     FROM [StaffSuite].[dbo].[tblLogTimes] 
     WHERE ActivityID = 44 
     AND WorkDate BETWEEN '2015-12-31 00:00:00.000' AND '2016-09-30 00:00:00.000' 
     GROUP BY EmpID) AS [Rec2] ON E.EmpID = [Rec2].EmpID 

但是你可以使用conditional aggregation進一步簡化它:

SELECT EmpID, FullDayHours, HalfDayHours 
FROM [StaffSuite].[dbo].[tblLogTimes] E 
INNER JOIN (SELECT EmpID 
       ,Count(case when activityid = 43 then 1 end) * 8 AS [FullDayHours] 
       ,Count(case when activityid = 44 then 1 end) * 4 AS [HalfDayHours] 
     FROM [StaffSuite].[dbo].[tblLogTimes] 
     WHERE ActivityID IN (43,44) 
     AND WorkDate BETWEEN '2015-12-31 00:00:00.000' AND '2016-09-30 00:00:00.000' 
     GROUP BY EmpID) AS [Rec1] ON E.EmpID = [Rec1].EmpID 
+0

聰明的解決方案,謝謝sgeddes .. –

相關問題