在哪里条款有条件

时间:2016-02-05 16:37:32

标签: sql sql-server tsql

我想创建一个where子句,该子句将考虑终止日期并说明他们雇用的日期是否介于这些值之间且术语日期不在雇用者之前或之前 - IE员工从未开始 - 我将如何那个?到目前为止,我有这个:

SELECT A.AdpID                                                   AS EmployeeID,
       ISNULL(A.Lname, '')                                       AS [Last Name],
       ISNULL(A.Fname, '')                                       AS [First Name],
       ISNULL(A.PrimaryEmail, '')                                AS [Email],
       ISNULL(M.Fname + ' ' + M.Lname, '')                       AS Manager,
       ISNULL(CONVERT(VARCHAR(100), A.HireDate, 101), '')        AS HireDate,
       ISNULL(CONVERT(VARCHAR(100), A.TerminationDate, 101), '') AS TermDate,
       ISNULL(DIV.DivisionName, '')                              AS Division,
       ISNULL(FUN.FunctionName, '')                              AS [Function],
       ISNULL(DEP.DepartmentName, '')                            AS Department,
       ISNULL(WGP.WorkgroupName, '')                             AS Workgroup,
       ISNULL(LOB.CcaLOBName, '')                                AS LOB,
       ISNULL(MAES.EmpStatusDesc, '')                            AS [Employee Type]
FROM   dbo.Associates AS A
       LEFT OUTER JOIN dbo.Associates AS M -- Look up for associate information
                    ON A.SuperPrincipal = M.AssocId
       LEFT OUTER JOIN dbo.MasterCCALob AS LOB -- Look up line of business
                    ON A.LobID = LOB.CcaLOBID
       LEFT OUTER JOIN dbo.MasterAssocEmpStatus AS MAES -- Look up for employee type
                    ON A.EmpStatusID = MAES.EmpStatusID
       LEFT OUTER JOIN dbo.AssociatesDepartment AS DEP WITH(NOLOCK) -- Look up for Department
                    ON A.AssociatesDepartmentID = DEP.AssociatesDepartmentID
       LEFT OUTER JOIN dbo.AssociatesDivision AS DIV WITH(NOLOCK) -- Look up for Division
                    ON A.AssociatesDivisionID = DIV.AssociatesDivisionID
       LEFT OUTER JOIN dbo.AssociatesWorkGroup AS WGP WITH(NOLOCK) -- Look up for WorkGroup
                    ON A.AssociatesWorkgroupID = WGP.AssociatesWorkgroupID
       LEFT OUTER JOIN dbo.AssociatesFunction AS FUN WITH(NOLOCK) -- Look up for Function
                    ON A.AssociatesFunctionID = FUN.AssociatesFunctionID
WHERE  ( LEN(A.TerminationDate) = 0
         AND ISNULL(A.HireDate, '1900-01-01') BETWEEN '2015-10-01' AND GETDATE() )
        OR ( LEN(A.TerminationDate) > 0
             AND ISNULL(A.TerminationDate, '1900-01-01') > ISNULL(A.HireDate, '1900-01-01')
             AND ISNULL(A.HireDate, '1900-01-01') BETWEEN '2015-10-01' AND GETDATE() )
ORDER  BY A.HireDate DESC 

where子句尽可能地糟糕,因为我从这个

获得了最疯狂的结果

0 个答案:

没有答案
相关问题