指定された日付範囲内のローン返済タイプに基づいて 5 つの条件に一致するクライアントのデータを返すカスタム レポートのクエリを実行しようとしています。基準はSalary Deduction
、Bank Standing Order
、Self-Pay
、Post Dated Cheques
およびBank Debit
です。結果は、指定された各基準からのクライアント数のカウントを返す必要があります。ただし、それは私が現在得ている結果ではありません。これらのクエリは、このソフトウェアMambuに対してテストされています。customfield
結果は、およびcustomfieldvalue
(使用する返済タイプを指定する) 列によって異なります。これは、私が望む結果がどのように見えるかを期待する方法です:
++++++++++++++++++++++++++++++++++++++++++++++++++++++
| LoanProduct | RepaymentType | Clients |
++++++++++++++++++++++++++++++++++++++++++++++++++++++
| JUMPSTART LOAN WEEKLY | Self-Pay | 35 |
------------------------------------------------------
| PAYDAY LOAN MONTHLY | Salary Deduction | 5 |
------------------------------------------------------
| MICRO-BIZ LOAN | Bank Debit | 26 |
------------------------------------------------------
| PAYDAY LOAN WEEKLY | Self-Pay | 1 |
.......
and so on ...
私がこれまでに試した解決策:
クエリ #1:
このクエリでは、特定の返済タイプのカウントなしですべてのクライアントを取得しようとしています。そのシナリオで機能します。
SELECT CONCAT(client.FIRSTNAME, ' ', client.LASTNAME) AS Client,
CONCAT(user.FIRSTNAME, ' ', user.LASTNAME) AS Originator,
loanproduct.PRODUCTNAME AS LoanProduct, customfieldvalue.VALUE AS RepaymentType
FROM client, user, customfieldvalue, loanaccount
INNER JOIN loanproduct ON loanaccount.PRODUCTTYPEKEY = loanproduct.ENCODEDKEY
WHERE client.ASSIGNEDUSERKEY = user.ENCODEDKEY
AND loanaccount.ACCOUNTHOLDERKEY = client.ENCODEDKEY
AND customfieldvalue.VALUE = "Bank Debit"
AND loanaccount.DISBURSEMENTDATE BETWEEN "2012-01-01" AND "2013-01-31"
GROUP BY user.LASTNAME, client.LASTNAME
QUERY #1.1
上記に
an を追加しOR
ても結果は得られません:
SELECT CONCAT(client.FIRSTNAME, ' ', client.LASTNAME) AS Client,
CONCAT(user.FIRSTNAME, ' ', user.LASTNAME) AS Originator,
loanproduct.PRODUCTNAME AS LoanProduct, customfieldvalue.VALUE AS RepaymentType
FROM client, user, customfieldvalue, loanaccount
INNER JOIN loanproduct ON loanaccount.PRODUCTTYPEKEY = loanproduct.ENCODEDKEY
WHERE client.ASSIGNEDUSERKEY = user.ENCODEDKEY
AND loanaccount.ACCOUNTHOLDERKEY = client.ENCODEDKEY
AND customfieldvalue.VALUE = "Bank Debit" OR customfieldvalue.VALUE = "Self-Pay"
AND loanaccount.DISBURSEMENTDATE BETWEEN "2012-01-01" AND "2013-01-31"
GROUP BY user.LASTNAME, client.LASTNAME
QUERY #2
ステートメント
を使用してこれを実行しようとしましたが、 asCASE
のすべての行のみが返され、完了するまでに約 12.1 秒かかります。Clients
NULL
SELECT
loanproduct.PRODUCTNAME AS LoanProduct, customfieldvalue.VALUE AS RepaymentType,
CASE
WHEN customfieldvalue.VALUE = "Salary Deduction" THEN COUNT(CONCAT(client.FIRSTNAME, ' ', client.LASTNAME))
WHEN customfieldvalue.VALUE = "Bank Standing Order" THEN COUNT(CONCAT(client.FIRSTNAME, ' ', client.LASTNAME))
WHEN customfieldvalue.VALUE = "Self-Pay" THEN COUNT(CONCAT(client.FIRSTNAME, ' ', client.LASTNAME))
WHEN customfieldvalue.VALUE = "Post Dated Cheques" THEN COUNT(CONCAT(client.FIRSTNAME, ' ', client.LASTNAME))
WHEN customfieldvalue.VALUE = "Bank Debit" THEN COUNT(CONCAT(client.FIRSTNAME, ' ', client.LASTNAME))
END AS Clients
FROM client, user, customfieldvalue, loanaccount
INNER JOIN loanproduct ON loanaccount.PRODUCTTYPEKEY = loanproduct.ENCODEDKEY
WHERE client.ASSIGNEDUSERKEY = user.ENCODEDKEY
AND loanaccount.ACCOUNTHOLDERKEY = client.ENCODEDKEY
AND loanaccount.DISBURSEMENTDATE BETWEEN "2012-01-01" AND "2013-01-31"
GROUP BY user.LASTNAME, client.LASTNAME
ここで私が間違っていることは何ですか? 前もって感謝します。