1

フィールド telephone_1、telephone_2、telephone_3、telephone_4 を含むテーブル (顧客) があります。

私が確認する必要があるのは、電話番号が他の顧客で使用されている場所の完全な記録です。どこかでデータに問題が発生し、顧客番号が重複していると思われます!

以下のコードを試してみましたが、1/1、2/2、3/3、および 4/4 を比較するだけなので、これは私が望むものを与えません。レコードを区別するために使用できる ID フィールドがあります。

 SELECT *
 FROM Customers AS a
 WHERE 1 < (SELECT Count(*)
 FROM Customers AS b
 WHERE a.Telephone_1 = b.Telephone_1
  OR a.Telephone_2 = b.Telephone_2
  OR a.Telephone_3 = b.Telephone_3
  OR a.Telephone_4 = b.Telephone_4

どんな支援も大歓迎です - ありがとう!

4

1 に答える 1

0

これはどう?

SELECT *
FROM Customers AS a
WHERE 1 < (
    SELECT Count(*)
    FROM Customers AS b
    WHERE a.Telephone_1 IN (b.Telephone_1, b.Telephone_2, b.Telephone_3, b.Telephone_4)
    OR a.Telephone_2 IN (b.Telephone_1, b.Telephone_2, b.Telephone_3, b.Telephone_4)
    OR a.Telephone_3 IN (b.Telephone_1, b.Telephone_2, b.Telephone_3, b.Telephone_4)
    OR a.Telephone_4 IN (b.Telephone_1, b.Telephone_2, b.Telephone_3, b.Telephone_4)
)

========テイク2=======

コメントに続いて:

電話番号と顧客 ID を含む新しいテーブルを作成する

CREATE TABLE tempTelephoneNos (
    INTEGER customer,
    VARCHAR(32) telephoneNo
);

これらが顧客 ID と電話番号に適切なデータ型であると仮定します。

新しいテーブルにデータを入力する

INSERT INTO tempTelephoneNos (customer, telephoneNo)
SELECT customer_id, telephone_1
FROM customers
UNION ALL
SELECT customer_id, telephone_2
FROM customers
UNION ALL
SELECT customer_id, telephone_3
FROM customers
UNION ALL
SELECT customer_id, telephone_4
FROM customers

次に、複数の顧客に表示される電話番号を見つけることができます

SELECT customer, telephoneNo
FROM tempTelephoneNos
WHERE 1 < (SELECT COUNT(*) FROM tempTelephoneNos GROUP BY telephoneNo)
于 2013-06-12T10:44:18.110 に答える