2015-08-18 37 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