2015-08-18 38 views
0

在下面的查詢,我試圖計算邏輯計算的變更記錄數列中的值

誰從活動改變了FTE狀態設置爲無效或反之亦然

不同的員工人數

'2015年1月1日' 和終止> ='2015年1月1日 '2015年6月30日'

日期間

報告一個月中日期'或終止日期爲空

區域爲NAM。

我得到770分的記錄,但它應該是606.I'm不知道如果我的查詢邏輯是correct.Thanks在前進!

SELECT A.[First Name] 
    ,A.[Last Name] 
FROM (
    (
     SELECT [First Name] 
      ,[Last Name] 
      ,[Report Month] 
      ,[Region] 
      ,[Date of FTE Termination] 
     FROM dbo.Data 
     WHERE (
       [Report Month] BETWEEN '2015-01-01' 
        AND '2015-06-30' 
       AND (
        [FTE Status] = 'Inactive' 
        OR [FTE Status] = 'Active' 
        ) 
       AND (
        [Date of FTE Termination] >= '2015-01-01' 
        OR [Date of FTE Termination] IS NULL 
        ) 
       AND [Region] = 'NAM' 
       ) 
     ) A INNER JOIN (
     SELECT [First Name] 
      ,[Last Name] 
      ,[Report Month] 
      ,[Bill To Code] 
      ,[Region] 
      ,[Date of FTE Termination] 
     FROM dbo.Data 
     WHERE (
       [Report Month] BETWEEN '2015-01-01' 
        AND '2015-06-30' 
       AND (
        [FTE Status] = 'Active' 
        OR [FTE Status] = 'Inactive' 
        ) 
       AND (
        [Date of FTE Termination] >= '2015-01-01' 
        OR [Date of FTE Termination] IS NULL 
        ) 
       AND [Region] = 'NAM' 
       ) 
     ) B ON A.[First Name] = B.[First Name] 
     AND A.[Last Name] = B.[Last Name] 
    ) 
GROUP BY A.[First Name] 
    ,A.[Last Name] 
ORDER BY A.[First Name] ASC 
+0

首先,你需要告訴我們爲什麼你覺得你應該得到606條記錄。如果您獲得的記錄超出您認爲應該得到的數量,請檢查單個表格中的加入密鑰,您可能在此處有重複記錄。 – Sagar

+0

它在Excel中測試過,發現有606條記錄,它們都是同一個表。它是一個帶有不同條件的內聯查詢。如何在此查詢中排除重複項? –

回答

0

您的JOIN不會強制連接的行具有相反的FTE狀態。

你需要把它改成這樣:

ON A.[First Name] = B.[First Name] 
AND A.[Last Name] = B.[Last Name] 
AND (
    (A.[FTE Status] = 'Active' AND B.[FTE Status] = 'Inactive') 
OR (A.[FTE Status] = 'Inactive' AND B.[FTE Status] = 'Active') 
) 

然後通過添加這些條件的JOIN,您可以從WHERE子句中刪除他們,雖然他們沒有真正在那裏傷害任何東西。

+0

謝謝Tab,我會研究它! –

+0

你的邏輯似乎是正確的,但我只得到95 records..Not知道爲什麼存在着巨大的差異 –

+0

你必須在表中First_Name和Last_Name組合重複。在Excel中,它的行爲有所不同,我們沒有加入同一張表。您需要從兩個表中的唯一鍵上加入表。你也使用相同的內聯選擇兩次,更好地使用CTE – Sagar