Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用Case语句删除表Join中的重复项_Sql_Sql Server_Sql Server 2005_Tsql - Fatal编程技术网

Sql 使用Case语句删除表Join中的重复项

Sql 使用Case语句删除表Join中的重复项,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我需要能够选择不同的“电话”,无论电话是来自工作还是家庭。所有的手机都必须是独一无二的 当在工作和家庭中的不同行中发现同一部手机时,此查询将生成重复项 SELECT CASE WorkPhone WHEN '' THEN HomePhone ELSE WorkPhone END AS Phone ,MAX(LastName) ,MAX(FirstName) FROM

我需要能够选择不同的“电话”,无论电话是来自工作还是家庭。所有的手机都必须是独一无二的

当在工作和家庭中的不同行中发现同一部手机时,此查询将生成重复项

SELECT CASE WorkPhone
        WHEN '' THEN 
            HomePhone
        ELSE 
            WorkPhone
        END AS Phone
       ,MAX(LastName)
       ,MAX(FirstName)
FROM   TableA
WHERE  (statusid = Inactive)
        AND 
            (modifieddate > '11/11/2011')       
        AND 
            NOT EXISTS (SELECT Phone FROM TableB WHERE Phone = WorkPhone OR Phone = HomePhone)      
        AND 
            NOT EXISTS (
            SELECT AreaCode + PhoneNumber FROM TableC 
            WHERE   
                (AreaCode = LEFT(WorkPhone,3) AND PhoneNumber = Substring(WorkPhone, 4, 7)
                )
                OR
                (AreaCode = LEFT(HomePhone,3) AND PhoneNumber = Substring(HomePhone, 4, 7))                             
                )

GROUP BY WorkPhone, HomePhone
您应按以下方式分组:

CASE WorkPhone
        WHEN '' THEN 
            HomePhone
        ELSE 
            WorkPhone
        END

如果他们有两个不同的工作号码,或者不同的工作和家庭号码,会发生什么?您是否必须指定该号码是工作号码还是家庭号码?我认为需要更详细的要求。我们首先选择工作号码,只有在缺少工作的情况下才选择家。你需要(1)不同的工作电话和家庭电话(电话号码可以是工作电话
家庭电话),每个名字和姓氏,或者你需要(2)不同的工作电话和家庭电话(电话号码是工作电话<代码>或<代码>家庭电话)对于每个名字和姓氏,或者您需要(3)不同的工作电话和家庭电话?您不能按别名列(
phone
)分组吗?在任何情况下,这也是我认为的问题。@X-Zero-除非使用派生表,否则无法按别名分组