2016-12-16 77 views
0

我想根據一個條件找出最高客戶 - 無論他們是表中的memo列的直接用戶。如果備忘錄包含文字如PAYROLL,PAYRLL,SALARYtransaction_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和'AMERICAN AIRLINE PAYRLL DEP'記錄中具有'Credit'的記錄可能有幫助 – YOBOX

+0

'transaction_type'字段是否允許多餘的空格?也許那個沒有計算的實際上是「信用」? – elmer007

回答

0

根據你的評論,「在transaction_type下有'Credit'的記錄和在備忘錄下的'AMERICAN AIRLINE PAYRLL DEP'是那些相同的記錄? 'AMERICAN AIRLINE PAYRLL DEP'是否在類型爲'Credit'的相同記錄中顯示在備忘錄中?還是他們是單獨的記錄?如果他們單獨更改AND和OR將解決它。

+0

您好,我們需要滿足兩個條件而不是一個。 – YOBOX

+0

我知道你需要同時滿足。由於您的通配符似乎是正確的,因此我們會留下找出該人沒有被您的查詢返回的原因。兩種最可能的解釋是,儘管該人的記錄符合每項標準,但他們沒有任何記錄符合兩者,或者transaction_type中的「Credit」與查詢中的「Credit」不同。因此,關於空白和大寫的評論。 – WhatEva