微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在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)不同的客户.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐