sql >> データベース >  >> RDS >> Oracle

同じテーブルの行と列を比較する

    joinを使用するのはどうですか ?以下に、異なるすべてのペアを示します。

    select tb.*, ts.*
    from company tb join
         company ts
         on tb.company_name = ts.company_name and
            ts.address_type = 'shipping' and
            tb.address_type = 'billing' and
            ts.address <> tb.address;
    

    異なる会社が必要な場合:

    select company_name
    from company t
    group by company_name
    having count(distinct case when t.address_type = 'billing' then address end) = 1 and
           count(distinct case when t.address_type = 'shipping' then address end) = 1 and
           (max(case when t.address_type = 'billing' then address end) <>
            max(case when t.address_type = 'shipping' then address end)
           );
    

    注:これにより、請求先住所と配送先住所が1つしかないことも確認されます。



    1. 古いパスワードによる認証はサポートされなくなりました。4.1スタイルのパスワードを使用してください

    2. Oracle-集約関数と組み合わせたRETURNING

    3. SQL:複数の列でGROUPBYとMAXを使用する

    4. 列のDjangoDBレベルのデフォルト値