2016-12-16 18 views
0

transactionテーブルのmemo列で直接的なユーザーであるかどうか、1つの条件に基づいてトップの顧客を特定しようとしています。メモにPAYROLLPAYRLLSALARYtransaction_type = 'Credit'などの単語が含まれている場合は、トップの顧客とみなされます。したがって、私は下のクエリを書いた:SQLワイルドカードの選択

SELECT user_id, 
    CASE WHEN transaction_type = 'Credit' AND 
       (memo LIKE '%PAYROLL%' OR memo LIKE '%PAYRLL%' OR memo LIKE '%SALARY%') 
      THEN 1 ELSE 0 END AS TOP_USERS 
FROM transaction 

しかし、私は1でなければなりません人を見ましたが、それでも、このコラムでは0としてカウント。 ワイルドカードに何か問題がありますか? PostgreSQLを使用しています。pgadmin3

+0

ワイルドカードで目立ったエラーはありませんが、それは私が与えられた情報から言えることです。一致するはずのレコードのTRANSACTION_TYPEとMEMOの値がわかっていればそれは役に立ちます。 –

+0

@MarkAdelsbergerこのユーザーは0とカウントされ、transaction_typeに「Credit」のレコードがあり、メモの下に「AMERICAN AIRLINE PAYRLL DEP」があります – YOBOX

+0

'transaction_type'フィールドは余分な空白を許しますか?おそらくカウントされなかったのは実際には「クレジット」でしょうか? – elmer007

答えて

0

「credit_type」の下に「credit」というレコードがあり、メモの下に「AMERICAN AIRLINE PAYRLL DEP」という人物が同じレコードであるというコメントに基づいていますか? 「AMERICAN AIRLINE PAYRLL DEP」は、タイプが「クレジット」であるか、別のレコードであるかと同じレコードにメモに表示されますか?それらが別々の場合は、ANDからORへの変更はそれを解決します。

+0

こんにちは、私たちは1つではなく両方の条件を満たす必要があります。 – YOBOX

+0

私は両方を満足させる必要があることを理解しています。あなたのワイルドカードが正しいように見えるので、その人物があなたの質問によって返されなかった理由がわかりました。 2つの可能性の高い説明は、それぞれの基準を満たすレコードを持っているが、両方を満たすレコードがないか、transaction_typeの「Credit」がクエリの「Credit」と同じではない。したがって、空白と大文字についてのコメント。 – WhatEva