0

クエリに問題があります: 顧客による注文のリストを含むテーブルがあります

orders: customer_id, payment_method ...some other field

顧客が特定の支払い方法で少なくとも 1 回支払いを行った場合、customer_id と「YES」を抽出する必要があります。

私はこのようなことを試しました:

SELECT DISTINCT o.customer_id, 
CASE WHEN o.payment_method = 10 THEN 'YES' ELSE 'NO' END AS credit_card
FROM orders AS o
WHERE o.year = 2012
ORDER BY o.customer_id

しかし、顧客が異なる支払い方法で支払いを行った場合、2 つのレコードが表示されます。1 つは 'YES' で、もう 1 つは 'NO' です... 1 つの値のみを取得することは可能ですか?

4

2 に答える 2

2
SELECT   o.customer_id, 
         IF(MAX(IF(o.payment_method=10, 1, 0)) = 1, 'YES', 'NO') credit_card
FROM     orders o
WHERE    o.year = 2012
GROUP BY o.customer_id
于 2012-07-19T16:22:48.490 に答える
0

group by を使用して自己結合を実行し、結合されたテーブルで NULL をテストできます (テストされていません)。

SELECT customer_id, IF(p.customer_id IS NULL, 'NO', 'YES')
FROM orders o
LEFT OUTER JOIN orders p ON o.customer_id = p.customer_id AND p.payment_method = 10
    AND p.year = 2012
WHERE o.year = 2012
GROUP BY o.customer_id
ORDER BY o.customer_id

p.year = 2012質問から条件が必要かどうかわかりません。

于 2012-07-19T16:23:56.750 に答える