2016-12-16 2 views
0

Ich versuche, die Top-Kunden auf der Grundlage einer Bedingung zu ermitteln - ob sie direkte Benutzer durch die memo Spalte in transaction Tabelle sind. Wenn das Memo Wörter wie PAYROLL, PAYRLL, SALARY und transaction_type = 'Credit' enthält, gelten diese als Top-Kunden. So schrieb ich Anfrage unten:SQL-Joker-Auswahl

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 

Allerdings sah ich eine Person, die 1 sein sollte, aber immer noch als 0 in dieser Spalte gezählt. Stimmt etwas nicht mit meiner Joker-Karte? Ich benutze PostgreSQL pgadmin3

+0

Ich sehe keinen grellen Fehler mit den Platzhaltern, aber das ist alles, was ich aus den gegebenen Informationen sagen kann. Es könnte hilfreich sein, wenn wir die Werte von TRANSACTION_TYPE und MEMO für den Datensatz kennen würden, die übereinstimmen sollten, aber nicht –

+0

@MarkAdelsberger diese Person, die als 0 gezählt wird, Datensätze von "Credit" unter Transaktionsart und "AMERICAN AIRLINE PAYRLL DEP" unter Memo – YOBOX

+0

Könnte das Feld 'transaction_type' zusätzliche Leerzeichen enthalten? Vielleicht ist der, der nicht gezählt wurde, tatsächlich "Kredit"? – elmer007

Antwort

0

Basierend auf Ihrem Kommentar, dass die Person "Datensätze von 'Credit' unter transaction_type und 'AMERICAN AIRLINE PAYRLL DEP' unter Memo" sind diese die gleichen Datensätze? Wird "AMERICAN AIRLINE PAYRLL DEP" in einem Memo im selben Datensatz angezeigt, in dem der Typ "Kredit" ist, oder handelt es sich um separate Datensätze? Wenn sie getrennt sind, würde das AND zu OR ändern, um es zu lösen.

+0

Hallo, wir müssen beide Bedingungen statt einer erfüllen. – YOBOX

+0

Ich verstehe, dass Sie beide erfüllen müssen. Da Ihre Platzhalter korrekt zu sein scheinen, müssen wir herausfinden, warum die Person von Ihrer Suchanfrage nicht zurückgegeben wurde. Die zwei wahrscheinlichsten Erklärungen, während die Person Datensätze hat, die jedes der Kriterien erfüllen, haben sie keine Datensätze, die beide erfüllen, oder das "Guthaben" in transaction_type ist nicht dasselbe wie das "Guthaben" in Ihrer Abfrage. Daher die Kommentare zu Whitespace und Großschreibung. – WhatEva