在Teradata SQL中查找给定列的哪些行具有不同的值

前端之家收集整理的这篇文章主要介绍了在Teradata SQL中查找给定列的哪些行具有不同的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图比较来自相同ID的两个地址,看看它们是否匹配.例如:
Id  Adress Code     Address
1   1               123 Main
1   2               123 Main
2   1               456 Wall
2   2               456 Wall
3   1               789 Right
3   2               100 Left

我只想弄清楚每个ID的地址是否匹配.所以在这种情况下,我想只返回ID 3作为地址代码1和2的不同地址.

解决方法

加入表格并给它两个不同的别名(A和B).这允许比较同一表的不同行.
SELECT DISTINCT A.Id
FROM
    Address A
    INNER JOIN Address B
        ON A.Id = B.Id AND A.[Adress Code] < B.[Adress Code]
WHERE
    A.Address <> B.Address

“小于”比较<确保您获得2个不同的地址,并且您没有两次获得相同的2个地址代码.使用“不相等”<>相反,会产生代码为(1,2)和(2,1);其中每一个依次为A别名和B别名.

join子句负责行的配对,其中where子句测试附加条件.

更新:

上述查询适用于任何地址代码.如果要将地址与特定地址代码进行比较,可以将查询更改为

SELECT A.Id
FROM
    Address A
    INNER JOIN Address B
        ON A.Id = B.Id
WHERE                     
    A.[Adress Code] = 1 AND
    B.[Adress Code] = 2 AND
    A.Address <> B.Address

我想这可能有助于找到帐单地址(地址代码= 1作为示例)与递送地址(地址代码= 2)不同的客户.

猜你在找的MsSQL相关文章