Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 49 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,11 @@ ranked_payees AS (
) AS rnk
FROM
flat_transactions AS t
INNER JOIN budgets AS b ON t.budget_id = b.id
INNER JOIN budgets AS b
ON t.budget_id = b.id
WHERE
t.payee_name != 'Starting Balance'
AND t.transfer_account_id IS NULL
AND NOT t.deleted
GROUP BY
b.id
, t.payee_id
Expand All @@ -110,63 +110,68 @@ ORDER BY
;
```

To get payees with no transactions:
To get duplicate payees, or payees with no transactions:

```sql
WITH st AS (
SELECT
WITH txns AS (
SELECT DISTINCT
budget_id
, payee_id
, MAX(NOT deleted) AS has_active_transaction
FROM
scheduled_flat_transactions
GROUP BY
flat_transactions

UNION ALL

SELECT DISTINCT
budget_id
, payee_id
FROM
scheduled_flat_transactions
)

, t AS (
, p AS (
SELECT
budget_id
, payee_id
, MAX(NOT deleted) AS has_active_transaction
, id
, name
FROM
flat_transactions
GROUP BY
budget_id
, payee_id
payees
WHERE
NOT deleted
AND name != 'Reconciliation Balance Adjustment'
)

SELECT DISTINCT
b.name AS budget
, p.name AS payee
FROM
budgets AS b
INNER JOIN payees AS p ON b.id = p.budget_id
LEFT JOIN t
ON (
p.id = t.payee_id
AND p.budget_id = t.budget_id
)
LEFT JOIN st
ON (
p.id = st.payee_id
AND p.budget_id = st.budget_id
)
WHERE
NOT p.deleted
AND p.name != 'Reconciliation Balance Adjustment'
AND (
t.payee_id IS NULL
OR NOT t.has_active_transaction
)
AND (
st.payee_id IS NULL
OR NOT st.has_active_transaction
)
ORDER BY
budget
, payee
FROM (
SELECT
b.name AS budget
, p.name AS payee
FROM
p
INNER JOIN budgets AS b
ON p.budget_id = b.id
LEFT JOIN txns AS t
ON p.id = t.payee_id AND p.budget_id = t.budget_id
WHERE
t.payee_id IS NULL

UNION ALL

SELECT
b.name AS budget
, p.name AS payee
FROM
p
INNER JOIN budgets AS b
ON p.budget_id = b.id
GROUP BY budget, payee
HAVING
COUNT(*) > 1

)
ORDER BY budget, payee
;
```

Expand All @@ -182,17 +187,15 @@ FROM (
, amount_major
FROM flat_transactions
WHERE
NOT deleted
AND category_name = 'Apps'
category_name = 'Apps'
AND SUBSTR(`date`, 1, 7) = SUBSTR(DATE(), 1, 7)
UNION ALL
SELECT
budget_id
, amount_major
FROM scheduled_flat_transactions
WHERE
NOT deleted
AND category_name = 'Apps'
category_name = 'Apps'
AND SUBSTR(date_next, 1, 7) < SUBSTR(DATE('now', '+1 year'), 1, 7)
)
;
Expand Down